Skip to main content
 首页 » 编程设计

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

2025年02月15日26lyj

我有一个具有元素形式的键值 rdd:

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

我想使用 reduceByKey 能够为同一个键分别收集所有 v1 和 v2 的总和,并将同一索引中的所有 1 相加,这样得到的 reduce 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+ y)

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