2016-11-17 25 views
2

我试图建立一个队列研究,以跟踪应用用户的行为,我想问问,如果你有关于如何从一个RDD 2这是RDD 1.鉴于排除元素的任何想法:如何获得PySpark中两个RDD的区别?

rdd1 = sc.parallelize([("a", "xoxo"), ("b", 4)]) 

rdd2 = sc.parallelize([("a", (2, "6play")), ("c", "bobo")]) 

对于为例,有RDD1集和RDD2之间的共同元素,我们只是做:

rdd1.join(rdd2).map(lambda (key, (values1, values2)) : (key, values2)).collect() 

其中给出:

[('a', (2, '6play'))] 

所以,这个连接将˚F指定rdd1和rdd2之间的共同元素,并仅从rdd2获取键和值。我想做相反的事情:找到rdd2中的元素,而不是rdd1中的元素,并仅从rdd2中获取键和值。换句话说,我想从rdd2中获取不在rdd1中的项目。所以预期的输出是:

("c", "bobo") 

想法?谢谢:)

+0

什么是星火的版本? –

回答

7

我刚刚得到了答案,它非常简单!

rdd2.subtractByKey(rdd1).collect() 

享受:)

相关问题