目前為止知道MapReduce有三種路徑輸入方式。
1、第一種是通過一下方式輸入:
FileInputFormat.addInputPath(job, new Path(args[0]));
FileInputFormat.addInputPath(job, new Path(args[1]));
FileInputFormat.addInputPath(job, new Path(args[2]));
FileInputFormat.addInputPath(job, new Path(args[3]));
這種方式可以接收多個路徑下的文件輸入,但是這些文件都是通過一個Map進行處理
2、第二種是通過以下方式輸入(第二個路徑參數是通過,分割的多個路徑):
FileInputFormat.addInputPaths(job, args[0] + "," + args[1] + "," + args[2]);
這種方式跟第一種相似,看源碼會發現,該方式是先將路徑通過,分割成String[] paths數組形式,然后再循環調用第一種方式,而且他也是通過一個Map進行處理
3、第三種是通過以下方式輸入:
MultipleInputs.addInputPath(job, new Path(args[0]), TextInputFormat.class,Mapper1.class);
MultipleInputs.addInputPath(job, new Path(args[1]), TextInputFormat.class,Mapper2.class);
MultipleInputs.addInputPath(job, new Path(args[2]), TextInputFormat.class,Mapper3.class);
這種方式是針對不同的輸入文件,他們的格式可能不同,然后針對他們的格式編寫相應的Map分別進行處理,這種方式更靈活些。
來自:http://f.dataguru.cn/thread-235219-1-1.html
