小编Céd*_*UIN的帖子

使用 Apache MurmurHash3.java x86 32 位方法获得负值

我必须使用 x86 32 位 murmurhash 来确定我在 Kafka 中发送消息的分区。另一个应用程序正在使用 NodeJS murmurhash.v3() 方法从预期分区获取消息。

我尝试了两种方法:

  1. 首先,我从https://svn.apache.org/repos/asf/mahout/trunk/math/src/main/java/org/apache/mahout/math/MurmurHash3.java获取了 Java 类
  2. 我还尝试将NodeJS murmurhash.v3()的JS代码翻译成Java(下表中的N到A列

这是我用来从 Apache java 方法获取值的代码:

int ret = MurmurHash3.MurmurHashV3(key, new Long(KAFKA_PARTITION_SEED).intValue());
Run Code Online (Sandbox Code Playgroud)

注意:目前,KAFKA_PARTITION_SEED = 100,但这只是一个测试值。未来将是一个 Long 值。

这是我完成的从 NodeJS转换为 Java 的代码:

    static int MurmurHashV3(String key, int seed) {
    int remainder;
    int bytes;
    int h1;
    int h1b;
    int c1;
    int c2;
    int k1;
    int i;

    remainder = key.length() & 3; // key.length % 4
    bytes = key.length() - remainder;
    h1 = …
Run Code Online (Sandbox Code Playgroud)

apache node.js murmurhash

5
推荐指数
1
解决办法
1376
查看次数

标签 统计

apache ×1

murmurhash ×1

node.js ×1