0

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

Phase 1:
Mapper.class ->  WordCountReduce.class

这将起作用。但是,Reducer.class 不能以相同的方式使用。即类似

Phase 2:
WordReadMap.class ->  Reducer.class

不管用。

这是为什么?

4

1 回答 1

1

我不明白为什么只要输出与输入属于同一类,它就不会。新 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也是一个接口,你不应该实例化它......

于 2012-10-31T17:33:27.410 回答