我想执行一个MR作业,我希望通过配置文件将参数传递给作业。在mapper和reducer中也应该使用相同的参数。哪种API最适合实现这一目标?
答案 0 :(得分:1)
可以将配置文件添加到DistributedCache中,我将向您展示如何在我的代码中完成:
要在mapper或reducer中读取文件,最简单的方法是在mapper / reducer的设置中从分布式缓存中打开它:
@Override
protected void setup(Context context) throws IOException,
InterruptedException {
Path[] uris = DistributedCache.getLocalCacheFiles(context
.getConfiguration());
String patternsFile = uris[0].toString();
BufferedReader in = new BufferedReader(new FileReader(patternsFile));
...
in.close();
}
要将其添加到缓存中,请在设置作业时添加以下内容:
try {
DistributedCache.addCacheFile(new URI(filename), job.getConfiguration());
} catch (URISyntaxException e) {
System.out.println("URI exception: "+filename);
e.printStackTrace();
}