2016-03-04 136 views
0

我有此RDD(示出两个元件):Pyspark:总和列的值

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

和我想在基于索引列表加起来元素,所以有 最终结果

[4, 2] 

我该如何做到这一点?我知道第一个元素('a'/'b')的存在是无关紧要的,因为我可以用一张地图去除它,所以问题变成了如何求和列值。

回答

1

可以剥离的按键如你所说,进而降低您的RDD如下(假设你有2列):

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

这会给你所有列的总和

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