Apache Spark - 使用2个RDD:RDD的补充

Jen*_*nny 8 apache-spark

我有2个RDD,每个都从不同类型的日志文件中读取,这些日志文件有一些共同的数据.因此,我们有类型为EventA的RDD和类型为EventB的RDD,其中类EventA和EventB继承自Event.

获取具有与EventA类型的RDD不同的事件的EventB类型的RDD的最佳方法是什么?

从逻辑上讲,如果我在"集合论"中提出问题,我对集合的补充感兴趣:RDD [EventB]∖RDD [EventA].我打算使用Event中定义的equals方法来推断哪些事件是相同的.

aar*_*man 14

我想你想要subtract或者重要数据是否在密钥中subtractByKey.

基本用法:
rdd.subtractByKey(otherRdd)

当第一个RDD较小时,此操作更有效,因为第一个RDD可以保留在内存中,而第二个RDD可以流式传输.从你的问题,如果你想要的一切,目前还不清楚A that isn't in Beverything that isn't in the intersection of A and B.所以第二种方法的解决方案是将两个减法的结果结合起来:

val newRdd = rdd.subtractByKey(otherRdd).union(otherRdd.subtractByKey(rdd))
Run Code Online (Sandbox Code Playgroud)