Apache Spark两个RDD之间的区别

时间:2015-07-07 17:49:06

标签: groovy apache-spark

假设我有这个示例作业(在带有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?

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

2 个答案:

答案 0 :(得分:12)

如果您只想要一组减法subtract就是答案。如果您想要“外部”集合,请尝试:

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

答案 1 :(得分:2)

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

rdd1 = A, B
rdd2 = B, C

您要查找的结果是A, C

这样做的一个简单方法是:

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