我的mapreduce工作之一是使用多个输入。工作完成后,我想删除输入文件。不幸的是,multipleinputs的api非常有限,不能提供fileinputformat的特性 FileInputFormat.getInputPaths()
.
我查看了hadoop的源代码,看起来我应该能够获得所有路径的形式 mapreduce.input.multipleinputs.dir.formats
但这对我来说总是空的。
当然,我可以将所有输入路径存储在某个“一侧”的某个位置,但我肯定有一种方法可以从hadoopsapi获得它。
for(Path path : getParsedSitesToMerge(conf, crawlPath)) {
MultipleInputs.addInputPath(job, path, SequenceFileInputFormat.class, InjectLinkMapper.class);
System.out.println(path.toString());
System.out.println(MultipleInputs.DIR_FORMATS + ": " + conf.get(MultipleInputs.DIR_FORMATS));
}
输出
file:/tmp/crawl1/link_db/links/parsed_1420300287148
mapreduce.input.multipleinputs.dir.formats: null
file:/tmp/crawl1/link_db/links/parsed_1420300308993
mapreduce.input.multipleinputs.dir.formats: null
1条答案
按热度按时间a11xaf1n1#
请参阅多输入代码的这部分:
你可以利用
String mappers = conf.get("mapreduce.input.multipleinputs.dir.formats");
当你说addinputpath来自你的驱动程序代码时,获取上面代码中的所有路径。