我需要实现以下功能使用Hadoop Map-Reduce?
1)我正在从一个源读取映射器的一个输入,并从另一个不同的输入源读取另一个输入。
2)我需要将映射器的两个输出传递到一个减速器中进行进一步处理。
在Hadoop Map-Reduce中是否有任何上述要求
MultipleInputs.addInputPath
就是你要找的。这就是您的配置的外观。确保 AnyMapper1 和 AnyMapper2 写入 MergeReducer 预期的相同输出
JobConf conf = new JobConf(Merge.class);
conf.setJobName("merge");
conf.setOutputKeyClass(IntWritable.class);
conf.setOutputValueClass(Text.class);
conf.setReducerClass(MergeReducer.class);
conf.setOutputFormat(TextOutputFormat.class);
MultipleInputs.addInputPath(conf, inputDir1, SequenceFileInputFormat.class, AnyMapper1.class);
MultipleInputs.addInputPath(conf, inputDir2, TextInputFormat.class, AnyMapper2.class);
FileOutputFormat.setOutputPath(conf, outputPath);
您可以创建自定义可写对象。您可以在映射器中填充相同的内容。稍后在化简器中,您可以获取自定义可写对象并执行必要的业务操作。