在 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 组合起来做这样的事情操作?
感谢您的帮助。
下面的作品。在适当的地方使用 tuples
和 list
而不是 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)]
我有 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 组合起来做这样的事情操作?
感谢您的帮助。
下面的作品。在适当的地方使用 tuples
和 list
而不是 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)]