【发布时间】:2016-11-07 07:16:51
【问题描述】:
在第二段的第一行,Wiki (https://en.wikipedia.org/wiki/MapReduce) 说 map() 也应负责“过滤”。
然而,我的理解是 map() 只负责通过“转换”改变数据集的“形式”,而不是“过滤”。
那条线是否令人困惑?
【问题讨论】:
-
地图是一个非常笼统的术语,可以表示多种含义。因为那是
MapReduce的 wiki,我假设这意味着在使用 Hadoop 时,map 阶段比在 Spark 中运行map()函数更大,它是整个处理单个工作单元。 -
是的,没错。但事实上,Spark 也利用了“MapReduce 框架”,所以我想知道通过 Spark map() 方法执行业务特定的过滤逻辑如何?
-
这不是 Spark 的工作方式。大 map 阶段和 reduce 阶段之间没有逻辑上的分离(与 MapReduce 不同,MapReduce 要求您保留 Map 阶段的任何输出以从 Reduce 中读取它)。 Spark 作业包含一组应用于分布式数据集的转换。其中一种转换可以是
filter转换。 -
我现在可以看到,与 MapReduce(例如,Hadoop Job-Tracker)不同,Spark“驱动程序管理器”允许跨工作节点并行执行“map() 和 reduce 函数。MapReduce,不支持这种风格的 map()/reduce() 执行,而是 MapReduce 先完成 map()-stage,然后切换到“reduce_stage”。有趣的是,未来 Spark 也会支持这种风格的“grouped reduce” ()" 执行,借助"shuffle() 转换(参考#people.eecs.berkeley.edu/~franklin/Papers/hotcloud.pdf)。
标签: hadoop apache-spark mapreduce