折叠动作如何在Spark中起作用?

the*_*evd 7 scala fold apache-spark

下面我有一个Spark fold动作的Scala示例:

val rdd1 = sc.parallelize(List(1,2,3,4,5), 3)
rdd1.fold(5)(_ + _)
Run Code Online (Sandbox Code Playgroud)

这会产生输出35.有人可以详细解释这个输出是如何计算的吗?

SCo*_*uto 6

从Scaladocs采取这里(重点煤矿):

@param zeroValue op 运算符的每个分区的累积结果的初始值,以及来自op运算符的不同 分区的组合结果的初始值 - 这通常是中性元素(例如,Nil用于列表连接或0求和)

zeroValue(合并从分区结果时每个分区一个,加1)你的情况增加四倍.结果是:

(5 + 1) + (5 + 2 + 3) + (5 + 4 + 5) + 5 // (extra one for combining results)
Run Code Online (Sandbox Code Playgroud)

  • 我得到了它(额外的一个用于结合结果,感谢答案.但是折叠动作的意义是什么我的意思是哪种情况,我应该去折叠而不是减少 (2认同)