我需要能够从mapreduce作业中获取yarn applicationId。我无法找到任何API来做到这一点。我的mapreduce工作的一个例子:
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
job.submit();
job.waitForCompletion(true);
是否有类似于job.getJobId
的API来检索纱线applicationId?我知道yarn application -list
命令,但我需要能够通过某种API知道程序中的applicationId。对于我可以解析的前缀(&#39; job&#39; vs&#39; application&#39;)看起来jobId与applicationId execpt相同,但我希望我可以使用的API中有一些东西。< / p>
答案 0 :(得分:1)
我最终解析了jobId,删除了'job'前缀并添加了'application'前缀,因为看起来applicationId没有为mapreduce作业公开,它与具有不同前缀的jobId基本相同。这是一个hacky方法,但现在有效。
答案 1 :(得分:0)
你也可以试试这个:
job.getJobID().appendTo(new StringBuilder("application"))
如果您看到JobID课程,那么他们正在通过&#34; JOB&#34;作为在这种情况下可以被应用程序替换的参数。
这将给出应用程序ID。