的更多详细信息,请参阅本文
例如,在map reduce程序中,我将reduce任务的数量给定为3,而自定义Partitioner为某个条件返回value 5
,那么会发生什么?
这是一个可能很愚蠢的问题,请澄清我
提前感谢
您的问题有两个方面。
如果分区小于减速器,那么减速器就会被浪费。所以你没有充分利用它们。
根据Hadoop最终指南,如果分区超过reducer,那么记录就会被丢弃。这意味着没有减速器会把它捡起来,它就不见了。
如果partitioner返回的reducer编号不可用,则这些记录将被丢弃。所以不要玩自定义分区器。
看看无错误的解决方案。
InputSampler.Sampler<IntWritable, Text> sampler =
new InputSampler.RandomSampler<IntWritable, Text>(0.1, 100);
InputSampler.writePartitionFile(conf, sampler);
conf.setPartitionerClass(TotalOrderPartitioner.class);
有关分区