Package org.apache.hive.common.util
Class Murmur3
- java.lang.Object
-
- org.apache.hive.common.util.Murmur3
-
public class Murmur3 extends java.lang.Object
Murmur3 is successor to Murmur2 fast non-crytographic hash algorithms. Murmur3 32 and 128 bit variants. 32-bit Java port of https://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp#94 128-bit Java port of https://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp#255 This is a public domain code with no copyrights. From homepage of MurmurHash (https://code.google.com/p/smhasher/), "All MurmurHash versions are public domain software, and the author disclaims all copyright to their code."
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classMurmur3.IncrementalHash32
-
Field Summary
Fields Modifier and Type Field Description private static longC1private static intC1_32private static longC2private static intC2_32static intDEFAULT_SEEDprivate static intMprivate static intM_32private static intN_32private static intN1private static intN2static longNULL_HASHCODEprivate static intR1private static intR1_32private static intR2private static intR2_32private static intR3
-
Constructor Summary
Constructors Constructor Description Murmur3()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static intfmix32(int length, int hash)private static longfmix64(long h)static long[]hash128(byte[] data)Murmur3 128-bit variant.static long[]hash128(byte[] data, int offset, int length, int seed)Murmur3 128-bit variant.static inthash32(byte[] data)Murmur3 32-bit variant.static inthash32(byte[] data, int length)Murmur3 32-bit variant.static inthash32(byte[] data, int length, int seed)Murmur3 32-bit variant.static inthash32(byte[] data, int offset, int length, int seed)Murmur3 32-bit variant.static inthash32(long l0)static inthash32(long l0, int seed)Murmur3 32-bit variant.static inthash32(long l0, long l1)static inthash32(long l0, long l1, int seed)Murmur3 32-bit variant.static longhash64(byte[] data)Murmur3 64-bit variant.static longhash64(byte[] data, int offset, int length)static longhash64(byte[] data, int offset, int length, int seed)Murmur3 64-bit variant.static longhash64(int data)static longhash64(long data)static longhash64(short data)private static intmix32(int k, int hash)private static intorBytes(byte b1, byte b2, byte b3, byte b4)
-
-
-
Field Detail
-
NULL_HASHCODE
public static final long NULL_HASHCODE
- See Also:
- Constant Field Values
-
C1_32
private static final int C1_32
- See Also:
- Constant Field Values
-
C2_32
private static final int C2_32
- See Also:
- Constant Field Values
-
R1_32
private static final int R1_32
- See Also:
- Constant Field Values
-
R2_32
private static final int R2_32
- See Also:
- Constant Field Values
-
M_32
private static final int M_32
- See Also:
- Constant Field Values
-
N_32
private static final int N_32
- See Also:
- Constant Field Values
-
C1
private static final long C1
- See Also:
- Constant Field Values
-
C2
private static final long C2
- See Also:
- Constant Field Values
-
R1
private static final int R1
- See Also:
- Constant Field Values
-
R2
private static final int R2
- See Also:
- Constant Field Values
-
R3
private static final int R3
- See Also:
- Constant Field Values
-
M
private static final int M
- See Also:
- Constant Field Values
-
N1
private static final int N1
- See Also:
- Constant Field Values
-
N2
private static final int N2
- See Also:
- Constant Field Values
-
DEFAULT_SEED
public static final int DEFAULT_SEED
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
Murmur3
public Murmur3()
-
-
Method Detail
-
hash32
public static int hash32(long l0, long l1)
-
hash32
public static int hash32(long l0)
-
hash32
public static int hash32(long l0, int seed)
Murmur3 32-bit variant.
-
hash32
public static int hash32(long l0, long l1, int seed)
Murmur3 32-bit variant.
-
hash32
public static int hash32(byte[] data)
Murmur3 32-bit variant.- Parameters:
data- - input byte array- Returns:
- - hashcode
-
hash32
public static int hash32(byte[] data, int length)
Murmur3 32-bit variant.- Parameters:
data- - input byte arraylength- - length of array- Returns:
- - hashcode
-
hash32
public static int hash32(byte[] data, int length, int seed)
Murmur3 32-bit variant.- Parameters:
data- - input byte arraylength- - length of arrayseed- - seed. (default 0)- Returns:
- - hashcode
-
hash32
public static int hash32(byte[] data, int offset, int length, int seed)
Murmur3 32-bit variant.- Parameters:
data- - input byte arrayoffset- - offset of datalength- - length of arrayseed- - seed. (default 0)- Returns:
- - hashcode
-
mix32
private static int mix32(int k, int hash)
-
fmix32
private static int fmix32(int length, int hash)
-
hash64
public static long hash64(byte[] data)
Murmur3 64-bit variant. This is essentially MSB 8 bytes of Murmur3 128-bit variant.- Parameters:
data- - input byte array- Returns:
- - hashcode
-
hash64
public static long hash64(long data)
-
hash64
public static long hash64(int data)
-
hash64
public static long hash64(short data)
-
hash64
public static long hash64(byte[] data, int offset, int length)
-
hash64
public static long hash64(byte[] data, int offset, int length, int seed)
Murmur3 64-bit variant. This is essentially MSB 8 bytes of Murmur3 128-bit variant.- Parameters:
data- - input byte arraylength- - length of arrayseed- - seed. (default is 0)- Returns:
- - hashcode
-
hash128
public static long[] hash128(byte[] data)
Murmur3 128-bit variant.- Parameters:
data- - input byte array- Returns:
- - hashcode (2 longs)
-
hash128
public static long[] hash128(byte[] data, int offset, int length, int seed)
Murmur3 128-bit variant.- Parameters:
data- - input byte arrayoffset- - the first element of arraylength- - length of arrayseed- - seed. (default is 0)- Returns:
- - hashcode (2 longs)
-
fmix64
private static long fmix64(long h)
-
orBytes
private static int orBytes(byte b1, byte b2, byte b3, byte b4)
-
-