mapreduce系列(2)shuffle流程及Combiner

来源:互联网 发布:天刀洛天依捏脸数据 编辑:程序博客网 时间:2024/06/05 23:04

一、shuffle流程原理

这里写图片描述

二、Combiner的使用

package wc;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;/** * combiner可以在在maptask在环形缓冲区溢出时和归并时进行相同key-value值得合并(和reduce功能类似), * 这样可以大大减少map到reduce的数据量。 * Created by tianjun on 2017/3/17. */public class WordcountCombiner extends Reducer<Text,IntWritable,Text,IntWritable>{    @Override    protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {        int count = 0 ;        for(IntWritable v: values){            count += v.get();        }        context.write(key,new IntWritable(count));    }}

在driver类中加上

 //设置combiner(由于WordcountCombiner和WordCountReducer实现的功能一模一样,所以可以直接用WordCountReducer替代)        wcjob.setCombinerClass(WordcountCombiner.class);        //wcjob.setCombinerClass(WordCountReducer.class);

本例由于是统计单词的次数,不会影响业务逻辑,所以Combiner可以放心使用。

0 0
原创粉丝点击