Class MurmurHash

java.lang.Object
org.apache.cassandra.utils.MurmurHash

public class MurmurHash extends Object
This is a very fast, non-cryptographic hash suitable for general hash-based lookup. See http://murmurhash.googlepages.com/ for more details. hash32() and hash64() are MurmurHash 2.0. hash3_x64_128() is *almost* MurmurHash 3.0. It was supposed to match, but we didn't catch a sign bug with the result that it doesn't. Unfortunately, we can't change it now without breaking Murmur3Partitioner. *

The C version of MurmurHash 2.0 found at that site was ported to Java by Andrzej Bialecki (ab at getopt org).

  • Constructor Details

    • MurmurHash

      public MurmurHash()
  • Method Details

    • hash32

      public static int hash32(ByteBuffer data, int offset, int length, int seed)
    • hash2_64

      public static long hash2_64(ByteBuffer key, int offset, int length, long seed)
    • getBlock

      protected static long getBlock(ByteBuffer key, int offset, int index)
    • rotl64

      protected static long rotl64(long v, int n)
    • fmix

      protected static long fmix(long k)
    • hash3_x64_128

      public static void hash3_x64_128(ByteBuffer key, int offset, int length, long seed, long[] result)
    • invRotl64

      protected static long invRotl64(long v, int n)
    • invRShiftXor

      protected static long invRShiftXor(long value, int shift)
    • invFmix

      protected static long invFmix(long k)
    • invTailReverse

      public static long invTailReverse(long num)
      This gives a correct reversal of the tail byte flip which is needed if want a non mod16==0 byte hash inv or to target a hash for a given schema.
    • inv_hash3_x64_128

      public static long[] inv_hash3_x64_128(long[] result)