hadooppathFilter无法筛选给定的路径



我使用的是hadoop 0.20.2版本,我有一个地图减少程序,可以从天气记录中找到最高温度。我的问题是,我在输入路径中有一组文件,我只想过滤出映射器所需的文件。在我的例子中,映射器的数据包括以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]));

您可以直接使用glob,即

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

这只是做你想做的事的一种替代方式。

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);
}
}

获取更多点击这里和此处

相关内容

  • 没有找到相关文章

最新更新