为什么即使使用单个reducer也会调用Partitioner

时间:2014-04-15 11:56:43

标签: hadoop mapreduce partitioner

如果我们将MR作业配置为仅使用单个reducer运行,则无需调用分区程序,这似乎是合乎逻辑的。

然而,我只是给了这个镜头,即使作业配置了一个减速器,看起来也会调用分区器。

为什么需要这样做的任何想法?

2 个答案:

答案 0 :(得分:2)

这是因为将键/值对分配给特定的reducer是扮演分区角色的类的责任。即使只有一个reducer,你仍然需要一个分区器来为这个reducer分配键/值对。

任何默认值的存在或if-there-only-one-reducer逻辑有效地将分区分配行为分配到分区器之外的位置,这对于OO设计来说并不是很好。

答案 1 :(得分:0)

在大多数情况下,即使您只有1个reducer,也不会调用分区器与调用它相同。但是如果抛出异常或者程序因为另一个原因而崩溃,而不是调用分区程序可能会隐藏程序中的错误,如果这样做有点人为,那么在分区程序中找到的任何错误都很容易在其他任何地方找到。由于调用它的成本非常低,因此没有理由不这样做,没有电话没有任何好处。

相关问题