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