[英]Different context types in hadoop for mapper and combiner
您好,我正在嘗試實現Java hadoop應用程序。 我想制作<Object,Text,NaicsAreaPair,LongWritable>的映射器(因此,映射器的輸出將是NaicsAreaPair作為鍵,將LongWritable作為值)。 然后,我需要組合器像<NaicsAreaPair,LongWritable,Text,AreaWagePair>一樣,這樣輸入與映射器輸出是正確的,但是組合器輸出與映射器輸出不同。
我在主班有這個配置:
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "NY statistics");
job.setJarByClass(NYStatisticsOwnWritableComparable.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(Combiner.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(NaicsAreaPair.class);
job.setOutputValueClass(LongWritable.class);
//job.setPartitionerClass(Rozdelovac.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
//job.setNumReduceTasks(3);
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
在這里,我不得不說將使用哪個輸出鍵和輸出值。 是否有可能設置它為映射器使用此輸出鍵和值,但對於組合器使用不同的設置呢?
非常感謝您的回答
它不是。 組合器的輸出必須與Mapper的輸出相同。
為什么要為此使用組合器? 通過減少網絡上發送的數據,合並器可以達到“性能”的目的。 有一些限制,例如輸入/輸出類型必須匹配映射器輸出(鍵/值)類型/縮減器輸入(鍵/值)類型,它執行的功能應該是關聯和可交換的,請參見此處的示例http:// www .philippeadjiman.com /博客/ 2010/03/14 / Hadoop的教程系列問題-4使用的有或沒有使用的-A-組合/
您想要的合成器,讓它成為減速器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.