Apache Spark 两个 RDD 之间的区别

Apache Spark difference between two RDDs

假设我有这个示例工作(在 Groovy w/ Java API 中):

def set1 = []
def set2 = []
0.upto(10) { set1 << it }
8.upto(20) { set2 << it }
def rdd1 = context.parallelize(set1)
def rdd2 = context.parallelize(set2)

//What next?

如何获得两者之间的差集?我知道 union 可以创建一个 RDD,其中包含这些 RDD 中的所有数据,但是我该如何做相反的事情呢?

如果您只想要一个集合减法,subtract 就是一个答案。如果您想要 "outer" 系列,请尝试:

rdd1.subtract(rdd2).union(rdd2.subtract(rdd1))

我假设您正在寻找这样的东西:

rdd1 = A, B
rdd2 = B, C

您要查找的结果是 A, C?

一个简单的方法是:

rdd1.union(rdd2).subtract(rdd1.intersection(rdd2))