当分区值大于reduce任务数时会发生什么?

qaxu7uf2  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(497)

例如,在map reduce程序中,我将reduce任务的数量设为3,并将自定义分区器返回 value 5 有条件的话会发生什么?
这是一个可能很愚蠢的问题请澄清我
提前谢谢

af7jpaap

af7jpaap1#

你的问题有两个方面。
如果分区小于reducer,那么reducer就会被浪费。所以你没有充分利用它们。
根据hadoop权威指南,如果分区多于reducer,那么记录就会被丢弃。意味着没有减速器会把它捡起来,它就不见了。

euoag5mw

euoag5mw2#

如果partitioner返回的reducer号不可用,那么这些记录将被丢弃。所以不要玩自定义分区。
看看无错误解决方案。

InputSampler.Sampler<IntWritable, Text> sampler =
    new InputSampler.RandomSampler<IntWritable, Text>(0.1, 100);
InputSampler.writePartitionFile(conf, sampler);
conf.setPartitionerClass(TotalOrderPartitioner.class);

有关分区的更多详细信息,请参阅本文

相关问题