Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python Spark中组合2个RDD_Python_Apache Spark_Pyspark_Rdd_K Means - Fatal编程技术网

在python Spark中组合2个RDD

在python Spark中组合2个RDD,python,apache-spark,pyspark,rdd,k-means,Python,Apache Spark,Pyspark,Rdd,K Means,我有两个RDD。假设rdd1={'a','b','c','a','c','a'}和rdd2是KMeans的一个输出,其集群分配如下->rdd2={0,0,1,1,0}。我想最终找出集群0和1中有多少个a和b。例如,0有两个a,所以类似于{0,a,2}等。有没有一种方法可以组合这两个rdd来执行这样的操作 谢谢你的帮助。下面的方法很有效。在适当的情况下,使用元组和列表而不是设置 rdd1 = sc.parallelize(['a','b','c', 'a', 'c', 'a']) rdd2 = s

我有两个RDD。假设rdd1={'a','b','c','a','c','a'}和rdd2是KMeans的一个输出,其集群分配如下->rdd2={0,0,1,1,0}。我想最终找出集群0和1中有多少个a和b。例如,0有两个a,所以类似于{0,a,2}等。有没有一种方法可以组合这两个rdd来执行这样的操作


谢谢你的帮助。

下面的方法很有效。在适当的情况下,使用
元组
列表
而不是
设置

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)]

因此,为了澄清,您需要寻找{0/a/2}、{1/a/1}、{0/b/1}、{1/c/2},我的理解正确吗?是的,这是正确的。如果这是一个特别大的数据集,您最好使用
reduceByKey
而不是
groupBy
然后是
map
@JoeC谢谢您的建议。我已经更新了答案非常感谢您的建议@JoeC。