python - 在pyspark中使用reduceByKey获取具有多个字段的值

标签 python apache-spark pyspark

我有一个键值rdd,其元素形式为:

(键,((v1,v2),1))

我想使用reduceByKey能够分别收集同一个键的所有v1和v2的总和,并将同一索引中的所有1加起来,这样得到的减少的rdd就有:

(键,((sum_v1,sum_v2),sum_1s))

我尝试了几次试验,例如:

.reduceByKey(lambda (p1,x), (p2,y) : (p1[0]+p2[0], p1[1]+p2[1]), x+y))

以及其他几个与此类似的试验,但都是徒劳的,我得到 'x' is undefined 和类似的错误命令。 那么合适的函数是什么?

谢谢!!

最佳答案

值的格式为:((v1, v2), one)

为了减少这 3 个参数,请尝试以下操作,它使用参数结构作为 reduceByKey(lambda x,y:x+) 中的 xy y)

.reduceByKey(lambda ((v1a,v2a),onea), ((v1b,v2b),oneb) : ((v1a+v1b,v2a+v2b),onea+oneb) )

关于python - 在pyspark中使用reduceByKey获取具有多个字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41855296/

相关文章:

全路径算法中的 Python 和列表可变性

java - 在同一 JVM 中检测到多个 SparkContext

python - 在/和\之间查找子字符串

apache-spark - 如何在每个命名空间的资源有限的 kubernetes 上运行 spark

python - 如何使用 Pandas 或 Spark Dataframe 展平嵌套 Excel 数据?

python - 对称色图 matplotlib

python - 如何检测 OpenCV 中何时释放 key ?

apache-spark - 使用 S3 时支持 Parquet 作为输入/输出格式

python - PySpark:当函数具有多个输出时

apache-spark - Pyspark 数据框 Parquet 与增量 : different number of rows