2015-07-21 71 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