我正在使用 Hadoop 1.0.4 的“新”API(包 org.apache.hadoop.mapreduce 中的类)。当我想链接 mapper/reducer 时,我发现 ChainMapper、ChainReducer 是为“旧”API(包 org.apache.hadoop.mapred 中的类)编写的。我应该怎么办?
问问题
3491 次
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 回答