当某些键集具有太多值时,如何平衡reducer?

时间:2015-04-17 03:22:12

标签: hadoop mapreduce reduce

由于数据不是那么平衡,当按键(必须)聚类时,某些键集有太多数据,有些键很少。在这种情况下我该如何平衡? 我看看InputSampler,它会起作用吗?

1 个答案:

答案 0 :(得分:1)

您可以实现自定义散列分区程序,这样您就可以将频率更高的键发送到一个reducer,将所有其他键的频率降低到其他reducer。

public static class AgePartitioner extends Partitioner<Text, Text> {

        @Override
        public int getPartition(Text key, Text value, int numReduceTasks) {




            //we have more keys in this range so we want to sent them to one reducer
            if(key >20 && key <=30){

                return 1 ;
            }
           else
                return 0;

        }
    }