Pyspark:求和列值
Pyspark: sum column values
我有这个 RDD(显示两个元素):
[['a', [1, 2]], ['b', [3, 0]]]
我想根据索引添加列表中的元素,所以有
最终结果
[4, 2]
我该如何实现?我知道第一个元素 ('a'/'b') 的存在是无关紧要的,因为我可以用地图将其删除,所以问题就变成了如何对列值求和。
你可以像你说的那样剥离键,然后按如下方式减少你的RDD(假设你有2列):
myRDD.reduce(lambda x,y:[x[0]+y[0], x[1]+y[1]])
这将为您提供所有列的总和
$ 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)])
我有这个 RDD(显示两个元素):
[['a', [1, 2]], ['b', [3, 0]]]
我想根据索引添加列表中的元素,所以有 最终结果
[4, 2]
我该如何实现?我知道第一个元素 ('a'/'b') 的存在是无关紧要的,因为我可以用地图将其删除,所以问题就变成了如何对列值求和。
你可以像你说的那样剥离键,然后按如下方式减少你的RDD(假设你有2列):
myRDD.reduce(lambda x,y:[x[0]+y[0], x[1]+y[1]])
这将为您提供所有列的总和
$ 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)])