2015-07-21 17 views
2

让我们考虑对RDD:pyspark;如何通过价值有效地降低

x = sc.parallelize([("a", 1), ("b", 1), ("a", 4), ("c", 7)]) 

有没有更有效的替代:

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

,以便找到所有值的总和

+0

有sum'和'减少(拉姆达X,Y之间'中执行策略小差:x + y)'但我怀疑这会对性能产生显着影响。 – zero323

回答

2

由于xPairRDD可以使用,而不是手动提取值values方法:

x.values().sum() 
2

RDD API

x.map(lambda x: x[1]).sum() 
有一个 sum方法

总和(个人)源代码

将此RDD中的元素相加。

sc.parallelize([1.0, 2.0, 3.0]).sum() 
6.0