如何从输入文件路径输出侧映射器和reducer,即驱动程序类,在hadoop中获取文件名

时间:2016-08-21 18:15:59

标签: hadoop mapreduce hadoop2

要在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 ..........

2 个答案:

答案 0 :(得分:1)

你必须使用MultipleInputs和mappers我认为我得到了一个很好的链接,当我长期练习时帮助了我。

MultipleInput Usage

答案 1 :(得分:0)

你可以这样使用: FileInputFormat.addInputPaths(job, String.valueOf(args[0]+","+args[1]));

在这里,您可以在 args[0] 和 args[1] 中提及单个文件的路径。