Class MurmurHash


  • public class MurmurHash
    extends java.lang.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 Summary

      Constructors 
      Constructor Description
      MurmurHash()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      protected static long fmix​(long k)  
      protected static long getBlock​(java.nio.ByteBuffer key, int offset, int index)  
      static long hash2_64​(java.nio.ByteBuffer key, int offset, int length, long seed)  
      static void hash3_x64_128​(java.nio.ByteBuffer key, int offset, int length, long seed, long[] result)  
      static int hash32​(java.nio.ByteBuffer data, int offset, int length, int seed)  
      static long[] inv_hash3_x64_128​(long[] result)  
      protected static long invFmix​(long k)  
      protected static long invRotl64​(long v, int n)  
      protected static long invRShiftXor​(long value, int shift)  
      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.
      protected static long rotl64​(long v, int n)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • MurmurHash

        public MurmurHash()
    • Method Detail

      • hash32

        public static int hash32​(java.nio.ByteBuffer data,
                                 int offset,
                                 int length,
                                 int seed)
      • hash2_64

        public static long hash2_64​(java.nio.ByteBuffer key,
                                    int offset,
                                    int length,
                                    long seed)
      • getBlock

        protected static long getBlock​(java.nio.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​(java.nio.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)