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 class
Murmur3.IncrementalHash32
-
Field Summary
Fields Modifier and Type Field Description private static long
C1
private static int
C1_32
private static long
C2
private static int
C2_32
static int
DEFAULT_SEED
private static int
M
private static int
M_32
private static int
N_32
private static int
N1
private static int
N2
static long
NULL_HASHCODE
private static int
R1
private static int
R1_32
private static int
R2
private static int
R2_32
private static int
R3
-
Constructor Summary
Constructors Constructor Description Murmur3()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static int
fmix32(int length, int hash)
private static long
fmix64(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 int
hash32(byte[] data)
Murmur3 32-bit variant.static int
hash32(byte[] data, int length)
Murmur3 32-bit variant.static int
hash32(byte[] data, int length, int seed)
Murmur3 32-bit variant.static int
hash32(byte[] data, int offset, int length, int seed)
Murmur3 32-bit variant.static int
hash32(long l0)
static int
hash32(long l0, int seed)
Murmur3 32-bit variant.static int
hash32(long l0, long l1)
static int
hash32(long l0, long l1, int seed)
Murmur3 32-bit variant.static long
hash64(byte[] data)
Murmur3 64-bit variant.static long
hash64(byte[] data, int offset, int length)
static long
hash64(byte[] data, int offset, int length, int seed)
Murmur3 64-bit variant.static long
hash64(int data)
static long
hash64(long data)
static long
hash64(short data)
private static int
mix32(int k, int hash)
private static int
orBytes(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)
-
-