mapreduce以编程方式获取当前作业id

bvuwiixz  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(297)

等我给你 JobClient.runJob(jobConf) 如何获取此mapreduce任务的jobid?
我在下面看到过这样的代码,但它返回当前运行的所有作业ID

  1. System.out.println("Printing job IDs...");
  2. JobClient client = new JobClient(jobConf);
  3. JobStatus[] status = client.getAllJobs();
  4. for(int i = 0; i < status.length; i++){
  5. if(!status[i].isJobComplete()){
  6. JobID jobid = status[i].getJobID();
  7. System.out.println(jobid.toString());
  8. }
  9. }

更新:
好吧,我忽略了一些事情。这个 runJob 方法返回 RunningJob 对象,它具有 getID 方法。但是 RunningJob 对象仅在作业完成运行后返回。在作业仍在运行时,是否仍要获取id?

  1. RunningJob currentJob = JobClient.runJob(jobConf);
  2. System.out.println("JobID: " + currentJob.getID().toString());
1dkrff03

1dkrff031#

顺从的工作似乎起到了作用。

  1. JobClient client = new JobClient(jobConf);
  2. RunningJob currentJob = client.submitJob(jobConf);
  3. System.out.println("JobID: " + currentJob.getID().toString());
busg9geu

busg9geu2#

要在作业运行时获取作业id的值,可以在新api中使用以下代码,
int value=job.waitforcompletion(真)?0 : 1;
jobid jobid=job.getjobid();
//使用jobid的逻辑
返回值;

相关问题