如果我将相同的路径两次添加到Hadoop会发生什么?

时间:2013-05-22 20:22:16

标签: hadoop elastic-map-reduce

我正在使用弹性贴图缩小。我想知道如果我在main方法中使用两次完全相同的行会发生什么。

  

FileInputFormat.addInputPath(job,new Path(                           “S3N:// mybucket /数据/ lolcat / *”));

hadoop会两次处理相同的文件吗?或者它会发现它们是相同的文件并且会跳过重复的文件吗?

1 个答案:

答案 0 :(得分:4)

以下是添加输入路径的来源:


public static void addInputPath(JobConf conf, Path path ) {
    path = new Path(conf.getWorkingDirectory(), path);
    String dirStr = StringUtils.escapeString(path.toString());
    String dirs = conf.get("mapred.input.dir");
    conf.set("mapred.input.dir", dirs == null ? dirStr :
      dirs + StringUtils.COMMA_STR + dirStr);
}

因此,您可以看到它只是将您的输入附加到 mapred.input.dir 而不查看之前的内容。

除了getSplits函数只使用List而不使用Set,所以如果你有相同的输入路径N次,它将被处理N次。在Hadoop流式传输作业上测试,如果我复制相同的输入路径,我会获得两倍的映射器。