[Hadoop]-MapReduce-使用篇
1.Mapper
1.1 泛型參數
Mapper有四個泛型參數,Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>:
KEYIN:默認讀取的一行文本的起始偏移量.Long類型,在Hadoop中包裝成LongWriteable
VALUEIN:默認讀取的一行文本的字符串信息.String類型,在Hadoop中包裝為Text.
KEYOUT:用戶map函數後,輸出的Key的類型.
VALUEOUT:用戶map函數後,輸出的Value的類型
(為了適應Hadoop內部的數據傳輸,存儲,排序等,Hadoop對一些基本數據類型都做了封裝,String=>Text,Int=>IntWriteable等.實際就是包裝實現Comparable和Writable接口)
1.2 map函數
void map(KEYIN key, VALUEIN value, Context context) throws IOException, InterruptedException
Context map執行的上下文對象,實現TaskInputOutputContext接口.包含map執行過程中的所有信息,比如spilte讀取,path,map結果等等
2.Reducer
2.1 泛型參數
Reducer也有四個泛型參數,Reducer<KEYIN,VALUEIN,KEYOUT,VALUEOUT>
KEYIN:Mapper輸出的Key的類型
VALUEIN:Mapper輸出的Value的類型
KEYOUT:Reducer輸出的Key的類型
VALUEOUT:Reducer輸出的Value的類型
2.2 reduce函數
void reduce(KEYIN key, Iterable<VALUEIN> values, Context context) throws IOException, InterruptedException
3.Job
Job啟動類,包含Job的初始化,Map類和Reduce類的指定等等
[Hadoop]-MapReduce-使用篇