为什么即使使用一个reducer也要调用partitioner

oyt4ldly  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(345)

如果我们将mr作业配置为仅使用一个reducer运行,那么不需要调用分区器似乎是合乎逻辑的。
不过,我只是对此进行了一次尝试,它看起来像是调用了partitioner,即使作业配置了一个reducer。
你知道为什么要这么做吗?

qnzebej0

qnzebej01#

在大多数情况下,不调用分区器与调用它是一样的,即使您只有一个reducer。但是,如果抛出异常或程序因其他原因崩溃,不调用分区器可能会隐藏程序中的错误,尽管这有点做作,因为在分区器中找到的任何错误都很容易在其他地方找到。既然打电话的成本很低,就没有理由不打,不打电话真的没有好处。

uubf1zoe

uubf1zoe2#

这是因为将键/值对分配给特定的reducer是扮演partitioner角色的类的责任。即使只有一个减速机,您仍然需要一个分区器将键/值对分配给该减速机。
任何默认值的存在或者只有一个reducer逻辑有效地将分区分配行为分配到分区器之外的地方,这并不是很好的oo设计。

相关问题