Получить идентификатор приложения пряжи из отправленного задания mapreduce

Мне нужно получить идентификатор приложения пряжи из задания mapreduce. Я не могу найти 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);

Есть ли API, похожий на job.getJobId, для получения идентификатора приложения пряжи? Я знаю о команде yarn application -list, но мне нужно знать идентификатор приложения в моей программе через какой-то API. Похоже, что jobId такой же, как applicationId, за исключением префикса («задание» против «приложения»), который я мог бы проанализировать, но я надеюсь, что есть что-то из API, которое я могу использовать.


person Eqbal    schedule 13.01.2017    source источник


Ответы (2)


В итоге я проанализировал jobId, удалив префикс «job» и добавив префикс «application», поскольку кажется, что applicationId не отображается для задания mapreduce, и это в основном тот же идентификатор, что и jobId с другим префиксом. Это хакерский подход, но пока работает.

person Eqbal    schedule 03.04.2017

Вы также можете попробовать это:

job.getJobID().appendTo(new StringBuilder("application"))

Если вы видите класс JobID, там они передают «JOB» в качестве аргумента, который в этом случае может быть заменен приложением.

Это даст идентификатор приложения.

person Aravind M    schedule 19.04.2018