我正在使用ControlledJobs在Hadoop 2.2.0中实现一系列MR作业。基本架构是这样的:
mapper1 -> reducer1 -> mapper2 -> reducer2
但是,mapper2是身份。有没有办法轻松让reducer1生成键值对并将它们传递给reducer2?
现在,两轮的作业输出配置如下:
// set intermediate/mapper output
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(Text.class);
// set reducer output
job.setOutputKeyClass(NullWritable.class);
job.setOutputValueClass(Text.class);
答案 0 :(得分:0)
据我所知,身份映射器仍然是一个映射器,你无法绕过它。但是,我相信在某些情况下,您可以将mapper1,reducer1和reducer2重构为一个作业,以便它成为:mapper1 - > reducer1。这完全取决于您的用例以及您尝试在此处减少(两次)的数据。