1. 程式人生 > >hadoop 一個Job多個MAP與REDUCE的執行

hadoop 一個Job多個MAP與REDUCE的執行

hadoop 中一個Job中可以按順序執行多個mapper對資料進行前期的處理,再進行reduce,經reduce後的結果可經個經多個按順序執行的mapper進行後期的處理,這樣的Job是不會儲存中間結果的,並大大減少了I/O操作。

例如:在一個Job中,按順序執行 MAP1->MAP2->REDUCE->MAP3->MAP4 在這種鏈式結構中,要將MAP2與REDUCE看成這個MAPREDUCE的核心部分(就像是單箇中的MAP與REDUCE),並且partitioning與shuffling在此處才會被應用到。所以MAP1作為前期處理,而MAP3與MAP4作為後期處理。

***************************************************

addMapper中的引數

public static <K1,V1,K2,V2> void
addMapper(JobConf job,
                    Class<? extends Mapper<K1,V1,K2,V2>> klass,
                    Class<? extends K1> inputKeyClass,
                    Class<? extends V1> inputValueClass,
                    Class<? extends K2> outputKeyClass,
                    Class<? extends V2> outputValueClass,
                    boolean byValue,
                    JobConf mapperConf)