2012-10-31 47 views
0

我注意到Mapper.class可以用作一個階段的真實映射器,以及一個用戶定義的減速器。例如,爲什麼Reducer.class在Hadoop MapReduce中不能用作真正的reducer?

Phase 1: 
Mapper.class -> WordCountReduce.class 

這將起作用。 但是,Reducer.class不能以相同的方式使用。即像

Phase 2: 
WordReadMap.class -> Reducer.class 

將無法​​正常工作。

這是爲什麼?

回答

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也是一個接口,你不應該能夠實例化它...

+0

是啊...我只是犯了一些錯誤...你是絕對正確的。 – Denzel

相關問題