public class Murmur3StreamGrouping extends Object implements CustomStreamGrouping
Simple CustomStreamGrouping
that uses Murmur3 algorithm to choose the target task of a tuple.
This stream grouping may be used to optimise writes to Apache Cassandra.
Constructor and Description |
---|
Murmur3StreamGrouping(List<String> partitionKeyNames)
Creates a new
Murmur3StreamGrouping instance. |
Murmur3StreamGrouping(String... partitionKeyNames)
Creates a new
Murmur3StreamGrouping instance. |
Modifier and Type | Method and Description |
---|---|
List<Integer> |
chooseTasks(int taskId,
List<Object> values)
This function implements a custom stream grouping.
|
static long |
hashes(List<Object> values)
Computes the murmur3 hash for the specified values.
|
void |
prepare(WorkerTopologyContext context,
GlobalStreamId stream,
List<Integer> targetTasks)
Tells the stream grouping at runtime the tasks in the target bolt.
|
public Murmur3StreamGrouping(String... partitionKeyNames)
Creates a new Murmur3StreamGrouping
instance.
partitionKeyNames
- partitionKeyNames
.public Murmur3StreamGrouping(List<String> partitionKeyNames)
Creates a new Murmur3StreamGrouping
instance.
partitionKeyNames
- partitionKeyNames
.public static long hashes(List<Object> values) throws IOException
Computes the murmur3 hash for the specified values. http://stackoverflow.com/questions/27212797/cassandra-hashing-algorithm-with-composite-keys https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/db/marshal/CompositeType.java
values
- the fields which are part of the (compose) partition keyIOException
public void prepare(WorkerTopologyContext context, GlobalStreamId stream, List<Integer> targetTasks)
Tells the stream grouping at runtime the tasks in the target bolt. This information should be used in chooseTasks to determine the target tasks.
It also tells the grouping the metadata on the stream this grouping will be used on.
prepare
in interface CustomStreamGrouping
public List<Integer> chooseTasks(int taskId, List<Object> values)
This function implements a custom stream grouping. It takes in as input the number of tasks in the target bolt in prepare and returns the tasks to send the tuples to.
chooseTasks
in interface CustomStreamGrouping
values
- the values to group onCopyright © 2019 The Apache Software Foundation. All rights reserved.