由于数据不是那么平衡,当按键(must)聚类时,一些键集的数据太多,有些键集的数据很少。在这种情况下,我该如何平衡?我已经研究了输入采样器,它会起作用吗?
您可以实现自定义哈希分区程序,以便可以将频率更高的密钥发送到一个化简器,将频率较低的所有其他键发送到其他化简器。
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;
}
}