2

エラスティック マップ リデュースを使用しています。メイン メソッドでまったく同じ行を 2 回使用するとどうなるのだろうか。

FileInputFormat.addInputPath(job, new Path( "s3n://mybucket/data/lolcat/*"));

Hadoop は同じファイルを 2 回処理しますか? それとも、それらが同じファイルであり、重複をスキップすることがわかりますか?

4

1 に答える 1

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関数はListand noのみを使用するだけでなくSet、同じ入力パスが N 回ある場合、N 回処理されます。Hadoop ストリーミング ジョブでテストしたところ、同じ入力パスを複製すると、マッパーの数が 2 倍になりました。

于 2013-05-22T20:44:09.893 に答える