一個單詞統計的實例,怎樣通過MapReduce完成排序?
阿新 • • 發佈:2017-08-31
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完成排序?