【发布时间】:2018-05-24 04:13:01
【问题描述】:
[Edit] 实际上,我的问题是关于 Spark RDD 聚合操作的业务场景/要求,尤其是对于 zeroValue 和 RDD 分区,而不是关于它在 Spark 中的工作方式。很抱歉造成混乱。
我正在学习各种 Spark RDD 计算。在研究 Spark RDD 聚合/折叠相关时,我无法考虑聚合/折叠的业务场景。
例如,我将通过折叠计算 RDD 中的值总和。
val myrdd1 = sc.parallelize(1 to 10, 2)
myrdd1.fold(1)((x,y) => x + y)
它返回 58。
如果我们将分区号从 2 更改为 4,它会返回 60。但我希望是 55。
我明白如果在制作 myrdd1 时没有给出分区号,spark 会做什么。它将采用未知的默认分区号。返回值将是“不稳定的”。
所以我不知道为什么Spark有这种逻辑。有没有真实的业务场景有这种需求?
【问题讨论】:
标签: scala apache-spark aggregate rdd