Hadoop 依赖关系作业 MapReduce JobControl 错误纠正

来源:互联网 发布:香港公开大学 知乎 编辑:程序博客网 时间:2024/05/30 23:46

最近要写MapReduce工作流,查了下书籍和资料,使用了JobControl,但是出现了明显的语法问题。

先贴一段广泛流传的code:


看上去很正常很美好,但是你把它放到IDE中就会发现
JC.addJob(Job ajob);
方法报错,参数Job不能转换成ControlledJob。

看上去很正常,其实是错误的。去查下Hadoop的API:
http://hadoop.apache.org/docs/r2.3.0/api/index.html

JobControl类添加作业有两个单参数方法:
addJob(ControlledJob aJob) 
addJob(Job aJob) 
咋一看没有问题啊,的确是Job类。
但是MapReduce中的Job类有好几个,我们看看这里的Job类是什么:
org.apache.hadoop.mapred.jobcontrol.Job
看到了,原来这里的Job是旧版api中的Job,不是新版api中的基础作业Job。So,
旧版api中基础作业使用jobConf,受控作业使用Job;
新版api中基础作业使用Job,受控作业使用ContorlledJob。

所以既然我们使用新版api来编写依赖关系作业流,代码要这么写:
这样就不会报错了,但是还是有待运行测试,未完待续。

PS:写技术文章必须要严谨,code起码要编译通过,想当然害死人啊!

0 0
原创粉丝点击