基于这里的这个例子,这是可行的。在我的数据集上尝试过同样的方法。
样本数据集:
OBSERVATION;2474472;137176;
OBSERVATION;2474473;137176;
OBSERVATION;2474474;137176;
OBSERVATION;2474475;137177;
将每一行视为字符串,我的 Mapper 输出为:
键-> 字符串[2],值-> 字符串。
我的分区代码:
@Override
public int getPartition(Text key, Text value, int reducersDefined) {
String keyStr = key.toString();
if(keyStr == "137176") {
return 0;
} else {
return 1 % reducersDefined;
}
}
在我的数据集中,大多数 id 是 137176。Reducer 声明为 -2。我希望有两个输出文件,一个用于 137176,第二个用于剩余的 ID。我得到两个输出文件,但是 Id 均匀分布在两个输出文件上。我的程序出了什么问题?