对于这个例子,spark reduce 是如何工作的?
val num = sc.parallelize(List(1,2,3))
val result = num.reduce((x, y) => x + y)
res: Int = 6
val result = num.reduce((x, y) => x + (y * 10))
res: Int = 321
我了解第一个结果(1 + 2 + 3 = 6)。对于第二个结果,我认为结果会是 60,但事实并非如此。有人可以解释吗?
Step1 : 0 + (1 * 10) = 10
Step2 : 10 + (2 * 10) = 30
Step3 : 30 + (3 * 10) = 60
更新:根据 Spark 文档:
该函数应该是可交换的和关联的,以便可以并行正确计算。
https://spark.apache.org/docs/latest/rdd-programming-guide.html