我可以将多个映射器类设置到一个作业中吗?
例如,我有一个来自 HDFS 的 csv 输入文件。我有两个任务要做。第一个是计算 csv 输入文件中的两个字段并将结果放入输出文件中。第二个是计算同一个 csv 输入文件中的另外两个字段,并将结果放入另一个输出文件中。 Reducer 是一样的。
我如何仅使用一项工作并让它们同时处理来实现这一目标? (我不想做完第一个再做第二个,我想让他们并行处理)。
我试试下面的代码:
job1.setMapperClass(Mapper1.class);
job1.setReducerClass(LogReducer.class);
job1.setMapperClass(Mapper2.class);
job1.setReducerClass(LogReducer.class);
我试过了,但没用,它只显示第二个结果,第一个结果不见了。
最佳答案
显然需要两个作业并行运行。由于映射任务和输出路径不同,并行运行两个作业有什么问题。如果作业未链接,则无法处理多个映射器。
关于java - Hadoop 几个映射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17735547/