我有这个RDD(显示两个元素):
[['a', [1, 2]], ['b', [3, 0]]]
我想根据索引在列表中添加元素,这样就可以了 最终结果
[4, 2]
我将如何实现这一目标?我知道第一个元素('a'/'b')的存在是无关紧要的,因为我可以用地图去掉它,所以问题就变成了如何对列值进行求和。
答案 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]])
这将为您提供所有列的总和