在Hadoop MapReduce中是否可以使用多个不同的映射器进行多个输入?

tib*_*bbe 12 hadoop mapreduce

在Hadoop MapReduce中是否可以使用多个不同的映射器进行多个输入?每个映射器类都处理不同的输入集,但它们都会发出同一个reducer所消耗的键值对.请注意,我不是在谈论链接映射器,我说的是并行运行不同的映射器,而不是顺序运行.

Chr*_*ken 13

这称为连接.

您希望在mapred.*包中使用映射器和缩减器(较旧,但仍受支持).较新的包(mapreduce.*)仅允许一个映射器输入.使用mapred包,可以使用MultipleInputs类来定义连接:

MultipleInputs.addInputPath(jobConf, 
                     new Path(countsSource),       
                     SequenceFileInputFormat.class, 
                     CountMapper.class);
MultipleInputs.addInputPath(jobConf, 
                     new Path(dictionarySource), 
                     SomeOtherInputFormat.class, 
                     TranslateMapper.class);

jobConf.setJarByClass(ReportJob.class);
jobConf.setReducerClass(WriteTextReducer.class);

jobConf.setMapOutputKeyClass(Text.class);
jobConf.setMapOutputValueClass(WordInfo.class);

jobConf.setOutputKeyClass(Text.class);
jobConf.setOutputValueClass(Text.class);
Run Code Online (Sandbox Code Playgroud)

  • 较新的apis(`mapreduce`不是`mapred`)确实有`MultipleInputs`:http://hadoop.apache.org/common/docs/r1.0.3/api/org/apache/hadoop/mapreduce/lib/input/ MultipleInputs.html (5认同)