Apache Spark AverageByKey和CollectByKey说明

时间:2015-03-02 09:29:42

标签: apache-spark

我正在尝试了解Spark的AverageByKey和CollectByKey API。

我读过这篇文章

http://abshinn.github.io/python/apache-spark/2014/10/11/using-combinebykey-in-apache-spark/

但我不知道它是否只是我......我不明白这些api是如何工作的

最令人困惑的部分是(x[0] + y[0], x[1] + y[1])

我的理解是x是sum而y是count。那么我们为什么要加上总和和数呢?

1 个答案:

答案 0 :(得分:1)

而不是:

sumCount = data.combineByKey(lambda value: (value, 1),
                         lambda x, value: (x[0] + value, x[1] + 1),
                         lambda x, y: (x[0] + y[0], x[1] + y[1]))

你可以写(x成为总数和计数的元组)

sumCount = data.combineByKey(lambda value: (value, 1),
                         lambda (total, count), value: (total + value, count + 1),
                         lambda (total1, count1), (total2, count2): (total1 + total2, count1 + count2))

但是,如果您需要计算平均DoubleRDD可能会有所帮助。