ODPS MapReduce JobClient的runJob与submitJob区别
ODPS MapReduce SDK提供两种任务提交方式,runJob
与submitJob
,两个函数功能都比较类似,都是向阿里伏羲(Fuji)系统提交Job
,但用法有些差别。
static RunningJob runJob(JobConf job)
- 阻塞(同步)方式提交MapReduce作业后立即返回
在作业失败时会抛出异常会被DataWorks捕获,如图
static RunningJob submitJob(JobConf job)
- 非阻塞(异步)方式提交MapReduce作业后立即返回
- 需要通过返回值RunningJob对象提供的方法判断作业是否运行成功,也就是说直接使用
submitJob
不作结果处理,作业失败时ODPS MR Job也会视为成功,如图
从源码层面看runJob对submitJob
返回RunningJob
对象进一步处理,以阻塞(同步)方式提交MapReduce作业并等待作业结束,作业失败则抛出异常。使用submitJob
方法,可以利用返回的作业运行时对象,更灵活跟踪控制运行中的 MapReduce作业实例。