gpt4 book ai didi

algorithm - 具有复合键的 Cassandra 哈希算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:33:29 27 4
gpt4 key购买 nike

我试图了解 Cassandra 使用什么算法来生成复合分区键的 murmur3 哈希。我知道我可以直接从 CQL 获取值,但我想直接从 Java/scala 代码为任何给定的元组重现 Cassandra 的行为。

对于简单的分区键,以下函数计算出正确的值(至少在许多情况下,我通过查看源代码知道它并不准确):

long l = com.google.common.hash.Hashing.Hashing.murmur3_128().hashString("my-string", Charset.forName("UTF-8")).asLong();

如果分区键上有两列怎么办?

两个字符串拼接的哈希值不一样。

最佳答案

感谢您提供有关该算法的更多详细信息。我写了一个示例代码来分享解决方案。

byte[] keyBytes;
try(ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(bos)) {

String[] keys = new String[] {"key1", "key2"};
for(String key : keys) {
byte[] arr = key.getBytes("UTF-8");
out.writeShort(arr.length);
out.write(arr, 0, arr.length);
out.writeByte(0);
}
out.flush();
keyBytes = bos.toByteArray();
}

long hash = Hashing.murmur3_128().hashBytes(keyBytes).asLong();

关于algorithm - 具有复合键的 Cassandra 哈希算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27212797/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com