Java 如何使用配置文件中的输入参数执行Map Reduce作业
我想执行一个MR作业,其中我想通过配置文件将参数传递给作业。映射器和减速器中也应使用相同的参数。哪个API最适合实现这一点?配置文件可以添加到DistributedCache中,我将在代码中向您展示它是如何实现的: 要在mapper或reducer中读取文件,最简单的方法是在mapper/reducer的设置中从分布式缓存中打开它:Java 如何使用配置文件中的输入参数执行Map Reduce作业,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,我想执行一个MR作业,其中我想通过配置文件将参数传递给作业。映射器和减速器中也应使用相同的参数。哪个API最适合实现这一点?配置文件可以添加到DistributedCache中,我将在代码中向您展示它是如何实现的: 要在mapper或reducer中读取文件,最简单的方法是在mapper/reducer的设置中从分布式缓存中打开它: @Override protected void setup(Context context) throws IOException,
@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();
}
您能告诉我在运行作业时调用同一文件并读取文件中的参数的方法吗?获得BufferedReader后,只需使用:in.readLine()即可读取配置文件的一行。问这个问题是为了了解在运行MR作业时使用外部文件可以实现的方法。这需要使用许多人可能不知道的不同API。这个问题对那些人很有帮助。请继续考虑这个问题。老实说:这是一个非常相关的问题,不久前我有同样的问题,但谷歌也没有给出一个简单的答案,因此在这里有一个精确的问题不是一个坏主意。我已经就一些SO问题解释了DBCache解决方案,但他们通常会问一个不同的问题。请参阅irW的评论,并重新考虑保留该问题。对于其他人可能面临的相同问题,您阻碍了更好的答案。