job.setNumReduceTasks(0)等同于具有空白的reduce函数

时间:2018-06-24 16:51:33

标签: hadoop mapreduce

job.setNumReduceTasks(0)导致仅地图工作

这是否意味着不执行中间阶段(混洗和排序)?

与使用空的reduce方法(不执行任何操作)相比,该方法如何:

public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {
  public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {                             
    \\do nothing            
  }
}

或者等价

1 个答案:

答案 0 :(得分:0)

区别很简单,

  1. 仅地图作业 在“仅地图”作业中,您没有洗牌阶段,这意味着没有数据在网络上发送。映射器将自动生成结果。 Check this out.
  2. Map-Reduce作业,即使您的化简器什么也不做,但数据仍将发送到化简器,这意味着正在进行混洗阶段。 Reducers会将结果写入磁盘。