Pyspark:总和列值

时间:2016-03-04 12:42:25

标签: apache-spark pyspark rdd

我有这个RDD(显示两个元素):

[['a', [1, 2]], ['b', [3, 0]]]

我想根据索引在列表中添加元素,这样就可以了 最终结果

[4, 2]

我将如何实现这一目标?我知道第一个元素('a'/'b')的存在是无关紧要的,因为我可以用地图去掉它,所以问题就变成了如何对列值进行求和。

2 个答案:

答案 0 :(得分:2)

$ pyspark
>>> x = [['a', [1, 2]], ['b', [3, 0]]]
>>> rdd = sc.parallelize(x)
>>> rdd.map(lambda x: x[1]).reduce(lambda x,y: [sum(i) for i in zip(x, y)])

答案 1 :(得分:1)

您可以按照说明剥离密钥,然后按如下方式减少RDD(假设您有2列):

myRDD.reduce(lambda x,y:[x[0]+y[0], x[1]+y[1]])

这将为您提供所有列的总和