【发布时间】:2016-07-03 14:02:52
【问题描述】:
reduce 与 fold 在技术实现方面有什么区别?
我知道它们的签名不同,因为 fold 接受添加到每个分区输出的附加参数(即初始值)。
- 有人能介绍一下这两个操作的用例吗?
- 在哪种情况下考虑 0 用于
fold,哪个会更好?
提前致谢。
【问题讨论】:
-
我认为这不是spark依赖的,儿子会更好地阅读其他资源或问题stackoverflow.com/questions/25158780/…
-
@anquegi,reduce 可以并行化的差异(在您链接到的答案中进行了解释)确实对 Spark 产生了重大影响。它与 Hadoop 无关,.. 确实是那个问题的重复
-
@TheArchetypalPaul fold(不是 foldLeft / foldRight)也可以(并且是)并行化。
-
查看源代码,它们基本上会同时运行。
fold在每个分区的迭代器上调用fold,然后合并结果,reduce在每个分区的迭代器上调用reduceLeft然后合并结果。不同之处在于fold不需要担心空分区或集合,因为那样它只会使用零值。性能差异可能甚至无法衡量。 -
@zero323,没问题,这是一个很好的答案,无论如何我们都不需要代表:)
标签: scala apache-spark rdd reduce fold