Тот же вопрос также относится к разделению RDD на несколько новых RDD.Искры расщепления DStream на несколько RDD
DStream или RDD содержит несколько различных классов case, и мне нужно превратить их в отдельные RDD на основе типа класса case.
Я знаю
val newRDD = rdd.filter { a => a.getClass.getSimpleName == "CaseClass1" }
или
val newRDD = rdd.filter {
a => a match {
case _: CC1 => true
case _ => false
}
}
Но это требует много прогонов через оригинальный РД, по одному на случай типа класса.
- Должен быть более сжатый способ сделать указанный фильтр соответствия?
- Есть ли способ разделить rdd на несколько по типу элемента с одним параллельным проходом?
Хорошо, но я действительно не хочу собирать? Я отредактировал выше, чтобы присвоить возвращаемый фильтр rdd. Другими словами, мне нужен фильтр, верно? – pferrel
Я думаю, это потому, что вернуть значение из закрытия проще, чем логическое? – pferrel
отредактировал ответ, чтобы показать, что вызов возвращает RDD. Как я уже говорил, rdd.collect() и rdd.collect {case x => x.y} имеют две совершенно разные цели. – maasg