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))
假设我有这个示例工作(在 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))