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

Hadoop 当分区值大于reduce任务数时会发生什么情况?,hadoop,dictionary,mapreduce,reduce,partition,Hadoop,Dictionary,Mapreduce,Reduce,Partition,例如,在map reduce程序中,我将reduce任务的数量设为3,自定义分区器返回值5作为条件,然后会发生什么 这是一个可能很愚蠢的问题,请澄清我 提前谢谢你的问题有两个方面 如果分区少于减缩器,那么减缩器就会被浪费。所以你没有充分利用它们 根据Hadoop权威指南,如果分区多于reducer,那么记录就会被丢弃。表示没有还原程序会将其拾取,并且它已不存在。如果分区程序返回的还原程序编号不可用,则这些记录将被丢弃。所以不要玩弄自定义分区器 看看无错误解决方案 InputSampler.Sam

例如,在map reduce程序中,我将reduce任务的数量设为3,自定义分区器返回
值5
作为条件,然后会发生什么

这是一个可能很愚蠢的问题,请澄清我


提前谢谢

你的问题有两个方面

如果分区少于减缩器,那么减缩器就会被浪费。所以你没有充分利用它们


根据Hadoop权威指南,如果分区多于reducer,那么记录就会被丢弃。表示没有还原程序会将其拾取,并且它已不存在。

如果分区程序返回的还原程序编号不可用,则这些记录将被丢弃。所以不要玩弄自定义分区器

看看无错误解决方案

InputSampler.Sampler<IntWritable, Text> sampler =
    new InputSampler.RandomSampler<IntWritable, Text>(0.1, 100);
InputSampler.writePartitionFile(conf, sampler);
conf.setPartitionerClass(TotalOrderPartitioner.class);
InputSampler.Sampler采样器=
新的输入采样器。随机采样器(0.1100);
InputSampler.writePartitionFile(conf,sampler);
conf.setPartitionerClass(TotalOrderPartitioner.class);
有关分区的更多详细信息,请参见此部分(1)根据您给出的注释,您键入的分区数小于REDUCE任务数,而您键入的分区数大于第二行中REDUCE任务数,这可能是一个错误,对吗?(2) 如果分区大于reduce任务的数量,那么根据确定的指导方法,记录被丢弃,它会抛出错误吗?