我正在尝试建立一个队列研究来跟踪应用内用户行为,我想问你是否知道如何从RDD 2中的RDD 2中排除一个元素。给定:< / p>
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'))]
因此,此连接将找到rdd1和rdd2之间的公共元素,并仅从rdd2获取键和值。我想做相反的事情:找到rdd2中的元素而不是rdd1中的元素,并仅从rdd2获取键和值。换句话说,我想从rdd2中获取rdd1中没有的项目。所以预期的输出是:
("c", "bobo")
想法?谢谢:))
答案 0 :(得分:9)
我得到了答案,而且非常简单!
rdd2.subtractByKey(rdd1).collect()
享受:)