hadoop pathfilter无法筛选给定路径

41zrol4v  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(639)

我使用的是hadoop 0.20.2版本,我有一个map reduce程序,可以从天气记录中找到最高温度。我的问题是我的输入路径中有一组文件,我只想筛选出Map程序所需的文件。在我的例子中,Map器的数据包括文件名以sample1.txt、sample2.txt等开头(同样的路径也有一些其他文件)。如何只输入以sample*开头的文件。我使用了以下路径过滤器。
有人能帮我吗?

public static class filter implements PathFilter {

    @Override
    public boolean accept(Path path) {
        // TODO Auto-generated method stub
        return path.toString().contains("sample");
    }

}

驱动程序代码包括:

FileInputFormat.setInputPathFilter(job, filter.class);
    FileInputFormat.addInputPath(job, new Path(args[0]));
    FileOutputFormat.setOutputPath(job, new Path(args[1]));
kdfy810k

kdfy810k1#

public class RegexExcludePathFilter implements PathFilter {
private final String regex;

public RegexExcludePathFilter(String regex) {
    this.regex = regex;
}

public boolean accept(Path path) {
    return !path.toString().matches(regex);
}
}

更多信息请点击这里和这里

atmip9wb

atmip9wb2#

您可以直接使用glob,即

Path inputpath = new Path(args[0] + "/" + "sample" + "*")
FileInputFormat.addInputPath(job, inputpath);

这只是做你想做的事的另一种选择。

相关问题