Раньше я использовал 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.
Есть ли что-то, что мне не хватает здесь?