【发布时间】:2016-01-27 10:48:18
【问题描述】:
例如在 map reduce 程序中,我将 reduce 任务的数量指定为 3,并且自定义 Partitioner 返回value 5 的条件,那么会发生什么?
这是一个可能很愚蠢的问题,请澄清一下
提前致谢
【问题讨论】:
标签: hadoop dictionary mapreduce reduce partition
例如在 map reduce 程序中,我将 reduce 任务的数量指定为 3,并且自定义 Partitioner 返回value 5 的条件,那么会发生什么?
这是一个可能很愚蠢的问题,请澄清一下
提前致谢
【问题讨论】:
标签: hadoop dictionary mapreduce reduce partition
您的问题有两个方面。
如果分区小于reducer,那么reducer 就会被浪费。所以你没有充分利用它们。
根据 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);
查看article 了解有关分区的更多详细信息
【讨论】: