在 python Spark 中组合 2 个 RDD

Combining 2 RDDs in python Spark

我有 2 个 RDD。假设 rdd1 = {'a','b','c', 'a', 'c', 'a'} 并且 rdd2 是具有集群分配的 KMeans 的输出如下->rdd2={0,0,1,1,1,0}。我想最终找出集群 0 和 1 中有多少个 a 和 b。例如 0 有 2 个 a,比如 {0, a, 2} 等。有没有办法将这 2 个 RDDS 组合起来做这样的事情操作?

感谢您的帮助。

下面的作品。在适当的地方使用 tupleslist 而不是 set

rdd1 = sc.parallelize(['a','b','c', 'a', 'c', 'a'])
rdd2 = sc.parallelize([0, 0, 1, 1, 1, 0])
rdd = rdd1.zip(rdd2).map(lambda x: (x,1)).reduceByKey(lambda x,y: x+y).map(lambda ((x1,x2),y): (x1,x2,y))
rdd.collect()

输出:

[('a', 0, 2), ('b', 0, 1), ('c', 1, 2), ('a', 1, 1)]