Roh*_*lvi 10 java apache hadoop mapreduce
以前,我是org.apache.hadoop.mapred.JobClient#getJob(org.apache.hadoop.mapred.JobID)
用来获得的RunningJob
.这个调用来自作业完成回调方法,但是,在我看来,存在一个计时问题,如果作业已经完成,那么上面的getJob()
方法找不到它并返回null.我可以确认该作业是从集群UI完成的.
保持RunningJob
分开,是否有办法获得org.apache.hadoop.mapreduce.Job
mapred作业的对象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);
我可以看到正确的jobId,也可以看到集群对象..但该cluster.getJob()
方法返回null,因此作业本身为null.
有什么我错过的吗?