要在mapper或reducer中获取文件路径,我们使用
FileSplit fileSplit = (FileSplit)reporter.getInputSplit();
String filename = fileSplit.getPath().getName();
System.out.println("File name "+filename);
System.out.println("Directory and File name"+fileSplit.getPath().toString());
process(key,value);
但是在输入文件夹中我有五种不同类型的文件,因此需要获取文件名,以便我可以为不同的文件设置不同的映射器。 args [0]中的示例我的输入文件夹/ cloudera / test包含test.txt,dev.txt,rev.txt
如果文件名包含dev,我应该设置mapper1 文件名包含test我应该设置mapper 2 ..........
答案 0 :(得分:1)
你必须使用MultipleInputs
和mappers我认为我得到了一个很好的链接,当我长期练习时帮助了我。
答案 1 :(得分:0)
你可以这样使用: FileInputFormat.addInputPaths(job, String.valueOf(args[0]+","+args[1]));
在这里,您可以在 args[0] 和 args[1] 中提及单个文件的路径。