Map端的聚合操作Combiner
生活随笔
收集整理的這篇文章主要介紹了
Map端的聚合操作Combiner
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
需求
詞頻統計,假設有一個文件,統計這個文件詞頻
常見的解決辦法
例如原始文本是:
交給兩個Map去處理,map1處理hello is hello is,map2處理hadoop is hadoop is hadoop,輸出結果map1為:(hello,1)(is, 1)(hello, 1)(is, 1),map2為(hadoop,1)(is, 1)(hadoop, 1)(is, 1)(hadoop,1)。然后把結果給shuffle,shuffle按照相同的key(會按照字典順序排序)丟給Reducer中去處理。
問題
map1中有4個Key,map2中有4個Key,一共9個Key。但是在Reducer中一共只輸出了3個Key。如果map1中處理1000萬個key,第二個處理1000萬個Key,所有的數據都要經過網絡傳輸,性能一定會受影響。
解決辦法
如果在map端再做一次聚合,是不是就會提高性能了。這個聚合的操作和我們的Reduce邏輯完全一樣。
這個Map端的聚合操作就叫做Combiner。
這樣能很大程度上節省網絡開銷。
實現方法
跟Reducer的方法是一樣的,直接添加上Reducer就可以了。
Combiner的優點
能減少IO,提升作業的執行性能
Combiner的局限性
在求平均數的場景下,會出現錯誤的結果。
總結
以上是生活随笔為你收集整理的Map端的聚合操作Combiner的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows连接远程Hadoop/Sp
- 下一篇: MapReduce自定义Partitio