我需要以与Cassandra使用Murmur3Partitioner分区数据相同的方式对数据进行分区。(在我的64位操作系统中)
我尝试了以下代码:
byte[] key="jim".getBytes("UTF-8");
ByteBuffer key=ByteBuffer.wrap(key);
Murmur3Partitioner murmur3Partitioner=new Murmur3Partitioner();
murmur3Partitioner.getToken(key);
但它并没有在以下链接中给出我的确切值: http://docs.datastax.com/en/cassandra/2.0/cassandra/architecture/architectureDataDistributeHashing_c.html
在Cassandra中是否有其他方法可以找到为密钥生成的令牌?
答案 0 :(得分:0)
在Cassandra中是否有其他方法可以找到为密钥生成的令牌?
是的,您可以使用token()
功能(FYI- firstname
是我的分区键):
aploetz@cqlsh:stackoverflow2> SELECT firstname,token(firstname),id,lastname
FROM usersbyfirstname ;
firstname | token(firstname) | id | lastname
-----------+----------------------+----+-----------
Zoe | -8194813905246394475 | 1 | Washburne
Hoban | -7767187360478820688 | 3 | Washburne
Jayne | -3415298744707363779 | 4 | Cobb
carol | -3169904368870211108 | 9 | lowercase
johnny | -2876970619340914070 | 7 | lowercase
jim | 2680261686609811218 | 6 | lowercase
Mal | 4016264465811926804 | 2 | Reynolds
suzy | 4113135677556563029 | 8 | lowercase
Jim | 7378266065874653000 | 5 | Bob
(9行)
请注意,区分大小写很重要,并为“Jim”和“jim”生成不同的标记。
但它并没有给我以下链接中的确切值
我怀疑您上面链接的文档仅作为示例编写,而不是精确值。
您在上面为“jim”生成的值是否等于2680261686609811218?如果是,那么上面的代码应该可以工作。