我使用的是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);
}
}
获取更多点击这里和此处