エラスティック マップ リデュースを使用しています。メイン メソッドでまったく同じ行を 2 回使用するとどうなるのだろうか。
FileInputFormat.addInputPath(job, new Path( "s3n://mybucket/data/lolcat/*"));
Hadoop は同じファイルを 2 回処理しますか? それとも、それらが同じファイルであり、重複をスキップすることがわかりますか?
エラスティック マップ リデュースを使用しています。メイン メソッドでまったく同じ行を 2 回使用するとどうなるのだろうか。
FileInputFormat.addInputPath(job, new Path( "s3n://mybucket/data/lolcat/*"));
Hadoop は同じファイルを 2 回処理しますか? それとも、それらが同じファイルであり、重複をスキップすることがわかりますか?
入力パスを追加するソースは次のとおりです。
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
and noのみを使用するだけでなくSet
、同じ入力パスが N 回ある場合、N 回処理されます。Hadoop ストリーミング ジョブでテストしたところ、同じ入力パスを複製すると、マッパーの数が 2 倍になりました。