我正试图理解Cassandra使用的算法来生成复合分区键的murmur3哈希值。我知道可以直接从CQL获取值,但我想要从Java/scala代码中直接重现Cassandra对于任何给定元组的行为。
对于简单的分区键,以下函数计算出正确的值(至少在许多情况下,通过查看源代码,我知道它并不精确): long l = com.google.common.hash.Hashing.murmur3_128().hashString("my-string", Charset.forName("UTF-8")).asLong();
如果我有两个列在分区键上呢?
连接两个字符串的哈希值不同。
对于简单的分区键,以下函数计算出正确的值(至少在许多情况下,通过查看源代码,我知道它并不精确): long l = com.google.common.hash.Hashing.murmur3_128().hashString("my-string", Charset.forName("UTF-8")).asLong();
如果我有两个列在分区键上呢?
连接两个字符串的哈希值不同。