我注意到Mapper.class可以用作阶段中的真实映射器,以及用户定义的reducer。例如,
Phase 1:
Mapper.class -> WordCountReduce.class
这会奏效。 但是,Reducer.class不能以相同的方式使用。就像是
Phase 2:
WordReadMap.class -> Reducer.class
无效。
为什么?
答案 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
也是一个接口,你应该无法实例化它......