2

我正在使用 Hadoop 1.0.4 的“新”API(包 org.apache.hadoop.mapreduce 中的类)。当我想链接 mapper/reducer 时,我发现 ChainMapper、ChainReducer 是为“旧”API(包 org.apache.hadoop.mapred 中的类)编写的。我应该怎么办?

4

2 回答 2

5

我也在寻找同样的东西。我确实得到了答案,尽管为时已晚,但我认为分享这可能会对某人有所帮助。

从 Hadoop 2.0 开始,您可以在包org.apache.hadoop.mapreduce.lib.chain中找到 ChainMapper 和 ChainReducer

ChainMapper 使用模式:
...
Job job = new Job(conf, "MyJob");

Configuration map1Conf = new Configuration(false); 
... ChainMapper.addMapper(job, AMap.class, LongWritable.class, Text.class, Text.class, Text.class, true, map1Conf);

Configuration map2Conf = new Configuration(false); 
... ChainMapper.addMapper(job, BMap.class, Text.class, Text.class, LongWritable.class, Text.class, false, map2Conf);

Configuration map3Conf = new Configuration(false); 
... ChainReducer.setReducer(job, CReducer.class, Text.class, Text.class, LongWritable.class, Text.class, false, map3Conf);
...

job.waitForComplettion(true);
... 
于 2013-04-23T10:21:38.413 回答
0

请阅读这篇文章。这显示了如何使用两个 JobConf 来启用 Map Reduce 作业的链接,而不是使用 ChainMapper/ChainReducer。

于 2012-11-22T02:56:16.390 回答