如果没有地图中的组合相位,则减速器的输入将减少。

时间:2016-08-01 08:30:56

标签: mapreduce

我正在阅读使用合成器的mapreduce教程 http://www.tutorialspoint.com/map_reduce/map_reduce_combiners.htm

reducer从组合器

接收以下输入
<What,1,1,1> <do,1,1> <you,1,1> <mean,1> <by,1> <Object,1>
<know,1> <about,1> <Java,1,1,1>
<is,1> <Virtual,1> <Machine,1>
<How,1> <enabled,1> <High,1> <Performance,1>

我怀疑如果我跳过组合器并允许映射器将输出传递给 减速器不执行任何分组操作(不使用组合器)并允许它通过shuffle和sort阶段。

在映射器阶段结束后以及经过混洗和分类阶段后,reducer会收到什么输入?

我可以查看减速机收到的输入信息吗?

1 个答案:

答案 0 :(得分:0)

我想说你从那个教程看的输出可能有点不对劲。由于它将reducer中的代码重新用作组合阶段,因此组合器的输出实际上看起来像:

<What,3> <do,2> <you,2> <mean,1> <by,1> <Object,1>
<know,1> <about,1> <Java,3>
<is,1> <Virtual,1> <Machine,1>
<How,1> <enabled,1> <High,1> <Performance,1>

在此示例中,您绝对不能使用联合收割机,最终结果将是相同的。在你有多个映射器和缩减器的情况下,组合器只会对映射器的输出进行一些本地聚合,而reduce会进行最终的聚合。

如果您在没有联合收割机的情况下运行,您仍将在减少阶段获得基于密钥的分组。联合收割机将在地图输出上为您进行一些本地聚合。

reduce的输入只是mapper写的输出,但按键分组。