我有两个单独的 java 类来执行两个不同的 mapreduce 作业。我可以独立运行它们。他们操作的输入文件对于这两个作业是相同的。所以我的问题是是否可以在一个java类中定义两个映射器和两个reducer,比如
mapper1.class
mapper2.class
reducer1.class
reducer2.class
然后喜欢
job.setMapperClass(mapper1.class);
job.setmapperClass(mapper2.class);
job.setCombinerClass(reducer1);
job.setCombinerClass(reducer2);
job.setReducerClass(reducer1);
job.setReducerClass(reducer2);
这些设置方法实际上是覆盖以前的方法还是添加新的方法?我尝试了代码,但它执行了唯一最新的给定类,这让我认为它会覆盖。但是必须有一种方法可以做到这一点吗?
我问这个的原因是我只能读取一次输入文件(一个 I/O),然后处理两个 map reduce 作业。我也想知道如何将输出文件写入两个不同的文件夹。目前,这两个作业是分开的,需要一个输入和一个输出目录。