Class TokenUtils

  • All Implemented Interfaces:
    java.io.Serializable

    public class TokenUtils
    extends java.lang.Object
    implements java.io.Serializable
    This is utility class for computing Cassandra token for a CQL row. This is mainly written to partition Cassandra ring and split it between Spark executors. And to make sure each executor is only talking to one Cassandra replica set. This reduces number of SSTables that get created in Cassandra by the bulk writing job. Fewer SSTables will result in lower read latencies and lower compaction overhead.
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      TokenUtils​(java.util.List<java.lang.String> partitionKeyColumns, java.util.List<ColumnType<?>> partitionKeyColumnTypes, boolean isMurmur3Partitioner)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.nio.ByteBuffer getCompositeKey​(java.lang.Object[] columnValues)  
      java.nio.ByteBuffer getCompositeKey​(java.nio.ByteBuffer[] byteBuffers)  
      java.math.BigInteger getToken​(java.lang.Object[] columnValues)
      Calculate Cassandra token for CQL row
      java.math.BigInteger getToken​(java.nio.ByteBuffer key)  
      java.math.BigInteger getToken​(java.util.List<java.lang.Object> columnValues)
      Calculate Cassandra token for CQL row
      java.math.BigInteger getToken​(java.util.Map<java.lang.String,​java.lang.Object> columnValues)
      Calculate Cassandra token for CQL row
      • Methods inherited from class java.lang.Object

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

      • TokenUtils

        public TokenUtils​(java.util.List<java.lang.String> partitionKeyColumns,
                          java.util.List<ColumnType<?>> partitionKeyColumnTypes,
                          boolean isMurmur3Partitioner)
    • Method Detail

      • getToken

        public java.math.BigInteger getToken​(java.nio.ByteBuffer key)
      • getCompositeKey

        public java.nio.ByteBuffer getCompositeKey​(java.lang.Object[] columnValues)
      • getCompositeKey

        public java.nio.ByteBuffer getCompositeKey​(java.nio.ByteBuffer[] byteBuffers)
      • getToken

        public java.math.BigInteger getToken​(java.util.Map<java.lang.String,​java.lang.Object> columnValues)
        Calculate Cassandra token for CQL row
        Parameters:
        columnValues - Map of partitioner key columns to column value as Java type
        Returns:
        Cassandra token
      • getToken

        public java.math.BigInteger getToken​(java.util.List<java.lang.Object> columnValues)
        Calculate Cassandra token for CQL row
        Parameters:
        columnValues - list of partitioner key columns in the same order as partition key
        Returns:
        Cassandra token
      • getToken

        public java.math.BigInteger getToken​(java.lang.Object[] columnValues)
        Calculate Cassandra token for CQL row
        Parameters:
        columnValues - array of partitioner key columns in the same order as partition key
        Returns:
        Cassandra token