作者:Syn良子 出處:http://www.cnblogs.com/cssdongl 歡迎轉載
抽空用kettle配置了一個Mapreduce的Word count,發現還是很方便快捷的,廢話不多說,進入正題.
一.創建Mapper轉換
如下圖,mapper讀取hdfs輸入,進行word的切分,輸出每個word和整數常量值
1>MapReduce Input:Mapper輸入,讀取HDFS上的輸入文件內容以鍵值對存儲;
2>Spit filed to rows:讀取value值以分隔符 "|" 進行切分(注意我這里hdfs文件中的word是以"|"隔開的)
3>Add constants:給每次出現的word追加一個常量字段mapValue,值為整數1.
4>MapReduce Output:Mapper輸出,key為每個word,這里為mapKey,value為常量值mapValue.
二.創建Reducer轉換
如下圖,Reducer讀取mapper的輸出.按照每個key值進行分組,對相應的常量值字段進行聚合,這里是做sum,然后最終輸出到hdfs文件中去.
1>MapReduce input:讀取Mapper中的輸出作為Reducer的輸入
2>GroupByKey:按照key進行分組(這里key是每個word), 然后對value進行聚合sum,求出每個word出現的總次數;
3>MapReduce Output:最終的鍵值對,每行以<單詞,總次數>來輸出到hdfs上去.
三.創建MapReduce Job.
創建最終的MapReduce Job,配置相應參數,調用Mapper和Reducer,見下圖
1>START:表示job的開始
2>SetMRVariables:組件是set variables,用於設置一些MapReduce執行所需要的參數的全局變量值,如hdfs input path等;
3>MapReduceWordCount:組件是Pentaho MapReduce組件,用來配置需要調用的Mapper和Reducer以及集群相關信息.
以上配置好以后執行MapReduce Job,會提交至Hadoop集群並運行成功,如上圖,可以同時看到MapReduce的執行進度。
鑒於kettle能對字段做各種切分,組合以及正則等處理,還可以自定義java class,所以基本的MR程序都可以快速配置出來.
以上配置的Job下載鏈接:http://files.cnblogs.com/files/cssdongl/MRJobTest.7z
參考資料:http://wiki.pentaho.com/display/BAD/Understanding+How+Pentaho+works+with+Hadoop