2

如何为我的 map reduce 指定通用输入路径。

示例文件夹结构是:

   folderA/folderB/folderC/mainfolder/date/day/data files

有许多日期文件夹和许多天文件夹。

我想在日期文件夹文件夹的特定范围内向下钻取,然后选择特定范围的数据文件。如果我尝试

'folderA/folderB/folderC/mainfolder/*/*' 

这将读取所有文件。我想指定一个日期范围,即读取 13-06-01 和 13-06-25 内的所有文件,并忽略所有其他日期文件夹。我怎么做?

4

1 回答 1

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);
于 2013-08-06T11:07:23.633 回答