JobControl和JofConf.setMapperClass()错误

时间:2013-10-10 23:02:13

标签: java generics hadoop mapreduce

我正在尝试使用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} }}。其中一个被认为是折旧的吗?

1 个答案:

答案 0 :(得分:1)

正如评论中所讨论的,mapredmapreduce软件包彼此不同,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?