我曾经使用以下
启动我的Hadoop作业long start = new Date().getTime();
boolean status = job.waitForCompletion(true);
long end = new Date().getTime();
这样我可以测量作业直接在我的代码中结束所花费的时间。
现在我必须使用JobControl来表达我的工作之间的依赖关系:
JobControl jobControl = new JobControl("MyJob");
jobControl.addJob(job1);
jobControl.addJob(job2);
job3.addDependingJob(job2);
jobControl.addJob(job3);
jobControl.run();
但是一旦执行了jobControl.run(),代码就不会再进一步了,所以我不能在jobControl.getState()上包含要轮询的代码来完成作业。
如何使用JobControl测量作业所用的时间?
答案 0 :(得分:1)
JobControl没有很好的功能允许您挂钩并获取此信息。你有一些(可能是痛苦的)选择:
JobControl.run()
,在主线程中,轮询JobControl.getXXXJobs()
方法以跟踪作业何时更改状态JobControl
和jobcontrol.Job
个对象以跟踪作业何时更改状态并添加查询开始/结束时间的方法