JobControl and JofConf.setMapperClass() error



我正在尝试使用 JobControl 将多个映射器和化简器连接在一起,但在调用 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吗?映射器并放弃 JobControl,并找到其他东西来连接我的作业,或者将我的实现更改为 mapred。映射器并继续使用JobControl。 其中一个是否被视为折旧?

正如评论中所讨论的,mapredmapreduce包彼此不同,mapreduce是更新、更干净的包。这篇文章进一步讨论了差异:hadoop.mapred vs hadoop.mapreduce?

因此,对于您的特定问题,您似乎想使用 org.apache.hadoop.mapreduce.lib.jobcontrol.JobControl 而不是 org.apache.hadoop.mapred.jobcontrol.JobControl .

另请参阅:使用 mapred 或 mapreduce 包来创建 Hadoop 作业更好吗?

相关内容

  • 没有找到相关文章

最新更新