Apache Spark两个RDD之间的区别

3

假设我有一个示例工作(使用Java API的Groovy语言):

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?

如何获取两个RDD之间的差集?我知道union可以创建一个包含这些RDD中所有数据的RDD,但我该如何实现相反的操作?

2个回答

17

如果您只想进行一组减法操作,subtract可能是一个答案。如果您想要“外部”集合,请尝试:

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

3
我想你可能需要这样的内容:

我假设你正在寻找类似于这样的东西:

rdd1 = A, B
rdd2 = B, C

你正在寻找的结果是A,C

一个简单的方法是:

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

这会导致一个空的集合,不是吗? - Dawid Wysakowicz
你说得对 - 我的意思是交集而不是并集,见编辑 :) - dpeacock

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接