我很困惑,因为我找到了两个答案。
1)根据Hadoop权威指南 - 第3版,第6章 - Map Side说:"在写入磁盘之前,线程首先将数据划分为与最终将被发送的reducer相对应的分区至。在每个分区中,后台线程按键执行内存中排序,如果有组合器函数,则在排序的输出上运行。
2)雅虎开发人员教程(Yahoo tutorial)表示Combiner在分区之前运行。
任何人都可以先澄清哪个先运行。
答案 0 :(得分:7)
Map Reduce Job可能包含一个或所有这些阶段
地图
联合
随机播放
减少
Partitioner
适合第二阶段和第三阶段
您可以访问此link了解详情。
在完成相关的SE问题后文章,
What runs first: the partitioner or the combiner?
Who will get a chance to execute first , Combiner or Partitioner?
我们可以看到意见分歧。
但从逻辑上讲,我觉得
这意味着Partitioner应首先运行,并且组合器必须在每个分区中使用输出数据运行。