我只是想确认我对 0 化简器和恒等化简器之间区别的理解。
- 0 化简器表示将跳过归简步骤,映射器输出将是最终输出
- 身份减少器意味着洗牌/排序仍然会发生?
你的理解是正确的。我会将其定义如下:如果您不需要对地图结果进行排序 - 则设置 0 减少,并且作业称为仅地图。
如果需要对映射结果进行排序,但不需要任何聚合 - 请选择标识化简器。
为了完成图片,我们有第三种情况:我们确实需要聚合,在这种情况下,我们需要化简器。
使用身份化简器的另一个用例是将所有结果合并到化简器>输出文件的<#中。 如果您使用 Amazon Web Services 直接写入 S3,这会很方便,尤其是在映射器输出很小(例如 grep/搜索记录(并且您有很多映射器(例如 1000 个(的情况下。
(IdentityReducer((mapred.reduce.tasks=1等(之间的主要区别在于,当你使用"No reducer"时,在MAP阶段之后没有分区和洗牌过程。因此,在这种情况下,您将从映射器获得"纯"输出,而无需任何进一步处理。它有助于开发和调试脓包,但不仅如此。
这取决于您的业务需求。如果您正在进行字数统计,则应减少地图输出以获得总结果。如果您只想将单词更改为大写,则不需要缩减。