映射reduce和hash分区

时间:2015-04-19 14:59:36

标签: mapreduce hadoop-partitioning

在了解MapReduce时,我遇到了this question

  

给定的Mapreduce程序让Map阶段生成100个键值对,并带有10个唯一键。

     

当使用散列分区器时,当至少一个Reduce任务肯定没有分配任何键时,该程序可以有多少Reduce任务(选择所有正确的答案)?

     
      
  • [] A. 3
  •   
  • [] B. 11
  •   
  • [] C. 50
  •   
  • [] D. 101
  •   
     

答案是B,C,D。

     

由于独特的按键'数字是10.我们必须至少有10个减少任务。并且至少有一个reduce任务具有null键。

我无法理解这些答案是如何得出的。请帮助我。

3 个答案:

答案 0 :(得分:0)

地图输出中的唯一键仅分配给一个reduce任务。如果有10个唯一键,并且有11个,50个或101个减少任务,则必然会有一些没有键的减少任务。

答案 1 :(得分:0)

To get one reducer output as empty file, i.e., no key assigned to reducer, we need at least 11 reducers because hashpartitioner distributes based on hash function. The eligible reducers to receive data here are part-r-00000 to part-r-00009.

Reducer no = key hashcode % n ( no of reducers)

So possible remainders are 0 to n-1. Here we have 10 unique keys, i.e., 10 different remainders. We will have empty reducers files even if number of reducers less than unique number of keys. In the worst scenario also we will get one reducer file empty if the number of reducers is more than unique keys.

答案 2 :(得分:0)

由于有10个唯一键,我们需要10个减速器,因为我们需要1个没有分配键的减速器,总共有11个减速器。

如果减速器的数量大于或等于11,则作业将无异常运行。所以任何超过或等于11 的数字都是答案。