0

我有以下字符串作为键。从下面的代码中,我看到所有的键都指向同一个减速器,尽管有很多减速器。最后,同一个减速器超载。我想,每个键(字符串),去一个不同的减速器。请帮我解决这个问题。谢谢!

String a = "71 1 2";
String b = "72 1 1";
String c = "70 1 3";

int hash_a = a.hashCode();
int hash_b = b.hashCode();
int hash_c = c.hashCode();

int part_a = hash_a % 10;
int part_b = hash_b % 10;
int part_c = hash_c % 10;

System.out.println("hash a: "+hash_a+" part_a: "+part_a);
System.out.println("hash b: "+hash_b+" part_b: "+part_b);
System.out.println("hash c: "+hash_c+" part_c: "+part_c);

Output:

hash a: 1620857277 part_a: 7
hash b: 1621780797 part_b: 7
hash c: 1619933757 part_c: 7
4

1 回答 1

1

一种选择是您定义一个自定义分区器而不是使用默认的 HashPartitioner 来确保您的密钥在您的减速器中均匀分布。

于 2012-07-19T20:30:53.693 回答