Раньше я использовал org.apache.hadoop.mapred.JobClient#getJob(org.apache.hadoop.mapred.JobID) для получения RunningJob. Этот вызов был сделан из метода обратного вызова завершения задания, однако мне кажется, что существует проблема синхронизации, когда, если задание уже завершено, выше описанный метод getJob() не может найти его и возвращает значение null. Я могу подтвердить, что задание было выполнено из пользовательского интерфейса кластера.
Сохраняя RunningJob в отдельности, существует ли способ получить объект org.apache.hadoop.mapreduce.Job для заданного задания, заданного org.apache.hadoop.mapreduce.JobID, независимо от того, выполняется ли задание в настоящий момент или завершено ли это задание?
Я попытался создать код, например:
Cluster cluster = jobClient.getClusterHandle();
Job job = cluster.getJob(JobID.forName(jobId));
log.info("Trying to get actual job with id {} , found {} on cluster {}", JobID.forName(jobId), job, cluster);
Я могу видеть правильную работу и видеть объект кластера.. но метод cluster.getJob() возвращает значение null, поэтому само задание равно null.
Есть ли что-то, что мне не хватает здесь?