2015-07-21 3 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) ', но я сомневаюсь, что это существенно повлияет на производительность. – zero323

ответ

2

Поскольку x является PairRDD вы можете использовать метод values вместо того, чтобы извлекать значения вручную:

x.values().sum() 
2

Существует sum метод в RDD API

x.map(lambda x: x[1]).sum() 

sum (self) исходный код

Добавить элементы в этом RDD.

sc.parallelize([1.0, 2.0, 3.0]).sum() 
6.0 
Смежные вопросы