Python Pyspark-reducer任务对值进行迭代

Python Pyspark-reducer任务对值进行迭代,python,mapreduce,apache-spark,pyspark,reducers,Python,Mapreduce,Apache Spark,Pyspark,Reducers,我第一次与pyspark合作 我希望我的reducer任务像在java中一样,对映射器中的键返回的值进行迭代 我看到只有累加器的选项,而不是像add函数add(data1,data2)=>data1是累加器那样的迭代 我想在我的输入中得到一个包含属于键的值的列表 这就是我想做的。有人知道是否有这样做的选项吗?请使用reduceByKey函数。在python中,它应该像 from operator import add rdd = sc.textFile(....) res = rdd.map(

我第一次与pyspark合作

我希望我的reducer任务像在java中一样,对映射器中的键返回的值进行迭代

我看到只有累加器的选项,而不是像add函数add(data1,data2)=>data1是累加器那样的迭代

我想在我的输入中得到一个包含属于键的值的列表


这就是我想做的。有人知道是否有这样做的选项吗?

请使用reduceByKey函数。在python中,它应该像

from operator import add
rdd = sc.textFile(....)
res = rdd.map(...).reduceByKey(add)
注:Spark和MR有基本的区别,因此建议不要强制将两者匹配。Spark还非常好地支持配对功能,如果您想要更高级的东西,请寻找aggregateByKey


顺便说一句,spark docs中深入讨论了字数计算问题(特别是flatmap的使用),您可能想看看

非常感谢,但这不是我的意思。我想用同一个键迭代所有的值。在我的例子中,这是机器学习的例子。我想收集所有实例并在reducer中训练模型。reduceByKey是aggregateByKey的缩写,它有一个更通用的形式,使用序列和组合操作。如果您使用它,您应该能够对一个键的所有值进行元组/列表。然而,“在reducer中做一些事情”仍然困扰着我,我很好奇为什么它可以在RDD中完成,就像已经是spark的一部分的mlib函数一样。