如何为地图缩小指定通用输入路径。
示例文件夹结构是:
folderA/folderB/folderC/mainfolder/date/day/data files
有许多日期文件夹和很多天文件夹。
我想在特定范围的日期文件夹文件夹中向下钻取,然后选择特定范围的数据文件。如果我试试
'folderA/folderB/folderC/mainfolder/*/*'
这将读取所有文件。我想指定一个日期为inlder范围,即读取13-06-01和13-06-25内的所有文件,并忽略所有其他日期文件夹。我该怎么做?
答案 0 :(得分:0)
如果您要提供
'folderA/folderB/folderC/mainfolder/*/*'
作为输入并希望过滤掉特定路径,您可能需要创建自定义PathFilter
在FileInputFormat中你有这个功能 -
static void setInputPathFilter (JobConf conf, Class<? extends PathFilter> filter)
Info: Set a PathFilter to be applied to the input paths for the map-reduce job
例如
public static class CustomPathFilter implements PathFilter {
@Override
public boolean accept(Path path) {
//you can implement your logic for finding the valid range of paths here.
//The valid range of dates and days for directories and files can be input
//as arguments to the job.
//Return true if you find a match or else return false.
return false;
}
}
像这样注册PathFilter -
FileInputFormat.setInputPathFilter(job, CustomPathFilter.class);