Combine过程的作用

在Reduce过程前进行数据预处理,提升Reduce过程的性能
它是本地化的过程,即跟Map Task运行在同一个机子上
一个典型的例子:
统计文件中单词出现次数:一个文件中有很多单词,需要统计每个单词的出现次数
Map Task的输入:
<LongWritable,Text>这里LongWritable是行序号,没有用,Text是一行数据,里面包含很多单词,我们需要将这些单词提取出来
Map Task的输出
<Text,IntWritable>这里Text是单词,IntWritable是1


这时候同一个Map Task的输出结果中有可能包含多条相同key(这里是单词)的记录,如果直接输出到Reduce Task,那么性能非常低,此时通过一个Combine过程,来将这些东西进行排序分组,就会大大提升效率


详细请《参考MapReduce的基础教程》


但是如果本地输出中不包含多条key相同的记录,那么此时通过Combine过程也没有意义


总结,Combine过程是一个中间优化的过程,能不能使用要看具体情况


《参考MapReduce的基础教程》:https://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.pdf

你可能感兴趣的:(Combine过程的作用)