【问题标题】:How to get the file name in hadoop from input file path out side mapper and reducer i.e driver class如何从映射器和减速器(即驱动程序类)的输入文件路径中获取hadoop中的文件名
【发布时间】:2016-12-28 06:57:30
【问题描述】:

要在 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 文件名包含测试我应该设置映射器 2 ..........

【问题讨论】:

    标签: hadoop mapreduce hadoop2


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      你必须使用MultipleInputs 和映射器,我想我有一个很好的链接可以帮助你,当我很久以前练习它时,它也帮助了我。

      MultipleInput Usage

      【讨论】:

        猜你喜欢
        • 2013-10-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-01
        • 1970-01-01
        • 2020-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多