我正在尝试使用JobControl
将多个Mappers和Reducers连接在一起但在调用JobConf.setMapperClass
时遇到以下错误:
setMapperClass(java.lang.Class<? extends org.apache.hadoop.mapred.Mapper>) in
org.apache.hadoop.mapred.JobConf cannot be applied to
(java.lang.Class<capture#530 of ? extends org.apache.hadoop.mapreduce.Mapper>)
似乎java抱怨我的Mapper实现,它基于mapreduce.Mapper
,而JobControl需要mapred.Mapper
。 (我在这方面是对的吗?)
现在我的问题是:我应该继续使用mapreduce.Mapper并放弃JobControl并找到其他内容来连接我的工作,或者将我的实现更改为mapred.Mapper并继续使用{{1} }}。其中一个被认为是折旧的吗?
答案 0 :(得分:1)
正如评论中所讨论的,mapred
和mapreduce
软件包彼此不同,mapreduce
是更新,更清晰的软件包。这篇文章进一步讨论了这些差异:hadoop.mapred vs hadoop.mapreduce?
因此,对于您的特定问题,您似乎希望使用org.apache.hadoop.mapreduce.lib.jobcontrol.JobControl
代替org.apache.hadoop.mapred.jobcontrol.JobControl
。
另请参阅:Is it better to use the mapred or the mapreduce package to create a Hadoop Job?