同样的问题也适用于将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