Sha256: 0397eeec4932e96181e2ef6dc4785ee3508add74b265b0ac8d7b85281b9a4cb5

Contents?: true

Size: 967 Bytes

Versions: 1

Compression:

Stored size: 967 Bytes

Contents

package org.embulk.filter.murmur2_partitioner;

import org.apache.kafka.common.utils.Utils;

import java.io.UnsupportedEncodingException;

public class Murmur2Partitioner {
    static int partition(String key, int partitionCount)
    {
        try {
            return partition(key.getBytes("UTF8"), partitionCount);
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException("Cannot convert string to byte array");
        }
    }

    static int partition(Long key, int partitionCount)
    {
        byte[] bytes = new byte[]{(byte)((int)(key >>> 56)), (byte)((int)(key >>> 48)), (byte)((int)(key >>> 40)), (byte)((int)(key >>> 32)), (byte)((int)(key >>> 24)), (byte)((int)(key >>> 16)), (byte)((int)(key >>> 8)), key.byteValue()};
        return partition(bytes, partitionCount);
    }

    static int partition(byte[] bytes, int partitionCount)
    {
        return Utils.toPositive(Utils.murmur2(bytes)) % partitionCount;
    }
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
embulk-filter-murmur2_partitioner-0.1.0 src/main/java/org/embulk/filter/murmur2_partitioner/Murmur2Partitioner.java