[MapReduce_5] MapReduce 中的 Combiner 元件應用
阿新 • • 發佈:2018-11-06
0. 說明
Combiner 介紹 && 在 MapReduce 中的應用
1. 介紹
Combiner:
Map 端的 Reduce,有自己的使用場景
在相同 Key 過多的情況下,在 Map 端進行的預聚合,大大緩解了網路間的 K-V 全分發
Combiner 適用場景:
- 最大值
- 求和
- 最小值
Combiner 不適用平均值的計算
2. 結合 Combiner 實現 Word Count
在 [MapReduce_1] 執行 Word Count 示例程式 程式碼基礎上在 WCApp.java 中添加了以下內容
3. 結合 Combiner 實現最高氣溫統計
在 [MapReduce_add_2] MapReduce 實現年度最高氣溫統計 程式碼基礎上進行改進
【3.1 編寫 MaxTempCombiner.java】
package hadoop.mr.combiner; import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer; import java.io.IOException; /** * Combiner 類 */ public class MaxTempCombiner extends Reducer<Text, IntWritable, Text, IntWritable> { @Override protected void reduce(Text key, Iterable<IntWritable> values, Context context) throwsIOException, InterruptedException { Integer max = Integer.MIN_VALUE; // 得到最大值 for (IntWritable value : values) { max = Math.max(max, value.get()); } // 輸出年份與最大溫度 context.write(key, new IntWritable(max)); } }
【3.2 修改 MaxTempApp.java】