分区程序的意外行为

时间:2017-05-07 14:32:08

标签: java hadoop mapreduce

这是我的分区代码

public int getPartition(Text key, IntWritable value, int i) {

    String s = key.toString();

    if(s.length()==1)
        return 0;
    if(s.length()==2)
        return 1;
    if(s.length()==6)
        return 2;
    else 
        return 3;}

根据它我需要4个减速器才能正常工作。

  1. 根据我的理解,如果我在驱动程序类中定义任意数量较少的reducer,我将发出IO异常并且作业将失败。
  2. 如果我定义的reducer数量多于所需的额外Reducer,则会创建空输出文件,但不会抛出任何异常。
  3. 我不明白的是,如果我在驱动程序文件中没有定义任何数量的reducer。它应该失败,因为默认的Reducer数量是1,但令我惊讶的是它有效。

    作业运行并创建了1个输出文件。 任何人都可以阐明它为什么以及如何运作?

0 个答案:

没有答案