我正在Hadoop 2.2.0中使用ControlledJobs实现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);
据我所知,身份映射器仍然是一个映射器,你不能绕过它。然而,我相信在某些情况下,你可以将mapper 1、reducer1和reducer2重构为一个作业,这样它就会变成:mapper 1->reducer1。这完全取决于您的用例以及您试图在这里减少(两次(的数据。