同樣的問題也適用於將RDD分成幾個新的RDD。Spark將一個DStream分成幾個RDD
DStream或RDD包含幾個不同的案例類,我需要根據案例類的類型將它們變成單獨的RDD。
我所知道的
val newRDD = rdd.filter { a => a.getClass.getSimpleName == "CaseClass1" }
或
val newRDD = rdd.filter {
a => a match {
case _: CC1 => true
case _ => false
}
}
但是這需要通過原RDD,每箱類類型一個不少的運行。
- 必須有一個更簡潔的方法來做上述匹配過濾器?
- 有沒有辦法通過一個平行關卡通過元素類型將rdd分成幾個?
好的,但我真的不想收藏嗎?我編輯了上面的代碼,將返回的過濾器分配給一個rdd。換句話說,我確實需要一個過濾器,對吧? – pferrel 2015-02-05 19:30:31
我想這是因爲從閉包返回值比布爾值更容易? – pferrel 2015-02-05 19:48:33
編輯了答案以表明該呼叫返回RDD。正如我所提到的,rdd.collect()和rdd。收集{case x => x.y}有兩個完全不同的目的。 – maasg 2015-02-05 19:50:37