1. 程式人生 > >一個單詞統計的實例,怎樣通過MapReduce完成排序?

一個單詞統計的實例,怎樣通過MapReduce完成排序?

mapreduce hadoop

假設有一批海量的數據,每個數據都是由26個字母組成的字符串,原始的數據集合是完全無序的,怎樣通過MapReduce完成排序工作,使其有序(字典序)呢?


對原始的數據進行分割(Split),得到N個不同的數據分塊:

技術分享


實例分析:WordCount


技術分享


這個類實現Mapper接口中的map 方法,輸入參數中的value 是文本文件中的一行,利用StringTokenizer將這個字符串拆成單詞,然後將輸出結果<單詞,1> 寫入到org.apache.hadoop.mapred.OutputCollector中。


技術分享


實現Reduce 類


這個類實現Reducer 接口中的reduce 方法, 輸入參數中的key, values 是由Map 任務輸出的中間結果,


values 是一個Iterator, 遍歷這個Iterator, 就可以得到屬於同一個key 的所有value。


此處,key是一個單詞,value 是詞頻。只需要將所有的value 相加,就可以得到這個單詞的總的出現次數。


技術分享

運行Job


在Hadoop中一次計算任務稱之為一個job, 可以通過一個JobConf對象設置如何運行這個job。


然後將JobConf對象作為參數,調用JobClient的runJob, 開始執行這個計算任務。


技術分享

實驗結果

技術分享


本文出自 “中科院計算所培訓” 博客,謝絕轉載!

一個單詞統計的實例,怎樣通過MapReduce完成排序?