gpt4 book ai didi

hadoop - 从 MultipleInputs 获取所有输入路径

转载 作者:可可西里 更新时间:2023-11-01 16:12:43 26 4
gpt4 key购买 nike

我的 mapreduce 作业之一是使用 MultipleInputs。工作完成后,我想删除输入文件。不幸的是,MultipleInputs 的 API 非常有限,并且不提供 FileInputFormat FileInputFormat.getInputPaths() 等功能。

我查看了 Hadoop 的源代码,看起来我应该能够从 mapreduce.input.multipleinputs.dir.formats 中获取所有路径,但这对我来说总是空的。

当然,我可以将所有输入路径存储在“一侧”的某处,但我确信必须有一种方法可以从 Hadoops API 获取它。

    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

最佳答案

参见 this MultipleInputs的部分代码:

 public static final String DIR_FORMATS = "mapreduce.input.multipleinputs.dir.formats";
public static void addInputPath(Job job, Path path,
Class<? extends InputFormat> inputFormatClass) {
String inputFormatMapping = path.toString() + ";" + inputFormatClass.getName();
Configuration conf = job.getConfiguration();
String inputFormats = conf.get(DIR_FORMATS);
conf.set(DIR_FORMATS,
inputFormats == null ? inputFormatMapping : inputFormats + ","
+ inputFormatMapping);
job.setInputFormatClass(DelegatingInputFormat.class);
}

你可以想出使用 String mappers = conf.get("mapreduce.input.multipleinputs.dir.formats"); 来获取上面代码中的所有路径,只要你说从您的驱动程序代码中添加输入路径。

关于hadoop - 从 MultipleInputs 获取所有输入路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27756920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com