Sha*_*shi 6 reduce scala fold apache-spark rdd
reduce与fold技术实施之间的区别是什么?
我知道它们的签名不同,因为它们fold接受附加的参数(即初始值),该参数被添加到每个分区输出中。
fold?提前致谢。
在性能方面,没有任何实际区别:
RDD.fold操作正在使用fold实施的分区Iterators上使用foldLeft。RDD.reducereduceLeft在分区上使用Iterators。两种方法都使用简单的循环依次保持可变的累加器和进程分区,foldLeft实现方式如下:
foreach (x => result = op(result, x))
Run Code Online (Sandbox Code Playgroud)
for (x <- self) {
if (first) {
...
}
else acc = op(acc, x)
}
Run Code Online (Sandbox Code Playgroud)
Spark中这些方法之间的实际差异仅与它们在空集合上的行为以及使用可变缓冲区的能力有关(可以说,这与性能有关)。您将在Spark为什么需要折叠动作中找到一些讨论?
此外,整体处理模型没有区别:
| 归档时间: |
|
| 查看次数: |
6094 次 |
| 最近记录: |