3

我需要使用 Hadoop Map-Reduce 实现以下功能吗?

1)我正在读取来自一个来源的映射器的一个输入和来自另一个不同输入源的另一个输入。

2)我需要将映射器的两个输出都传递到单个减速器中以进行进一步处理。

Hadoop Map-Reduce 中是否有上述要求?

4

2 回答 2

0

您可以创建自定义可写。您可以在 Mapper 中填充相同的内容。稍后在 Reducer 中您可以获取自定义可写对象并进行必要的业务操作。

于 2014-05-12T15:01:55.327 回答
0

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);
于 2014-05-12T22:09:34.553 回答