为什么不能将Reducer.class用作Hadoop MapReduce中的真正减速器?

时间:2012-10-31 17:24:38

标签: hadoop mapreduce

我注意到Mapper.class可以用作阶段中的真实映射器,以及用户定义的reducer。例如,

Phase 1:
Mapper.class ->  WordCountReduce.class

这会奏效。 但是,Reducer.class不能以相同的方式使用。就像是

Phase 2:
WordReadMap.class ->  Reducer.class

无效。

为什么?

1 个答案:

答案 0 :(得分:1)

我不明白为什么只要输出与输入属于同一类,它就不会出现。 default in the new API只是写出你传入的内容,它实现为

@SuppressWarnings("unchecked")
protected void reduce(KEYIN key, Iterable<VALUEIN> values, Context context
                       ) throws IOException, InterruptedException {
    for(VALUEIN value: values) {
      context.write((KEYOUT) key, (VALUEOUT) value);
    }
}

对于旧API,它是interface,您无法直接实例化接口。如果你正在使用它,那就是它失败的原因。然后,Mapper也是一个接口,你应该无法实例化它......