Murmur3在Cassandra分区

时间:2015-06-10 05:36:11

标签: cassandra datastax-java-driver

我需要以与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中是否有其他方法可以找到为密钥生成的令牌?

1 个答案:

答案 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?如果是,那么上面的代码应该可以工作。