2

我正在尝试JobControl将多个 Mapper 和 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并继续使用JobControl. 其中之一是否被视为折旧?

4

1 回答 1

1

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

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

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

于 2013-10-11T01:42:56.170 回答