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