Kettle實現MapReduce之WordCount


作者: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,配置相應參數,調用MapperReducer,見下圖

 

1>START:表示job的開始

2>SetMRVariables:組件是set variables,用於設置一些MapReduce執行所需要的參數的全局變量值,hdfs input path;

3>MapReduceWordCount:組件是Pentaho MapReduce組件,用來配置需要調用的MapperReducer以及集群相關信息.

以上配置好以后執行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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM