Class AvroSerializer

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, KafkaCdcSerializer<org.apache.cassandra.cdc.msg.CdcEvent>, org.apache.kafka.common.serialization.Serializer<org.apache.cassandra.cdc.msg.CdcEvent>

    public class AvroSerializer
    extends java.lang.Object
    implements KafkaCdcSerializer<org.apache.cassandra.cdc.msg.CdcEvent>
    Serializes Cassandra CDC POJO classes to Avro bytes for publishing to Kafka, and deserializes the bytes to Avro records. The data types in Avro records are suitable for Spark.

    Optional logical type conversions can be applied via RecordReader to convert data to CQL-appropriate types.

    • Constructor Summary

      Constructors 
      Constructor Description
      AvroSerializer​(java.util.function.Function<org.apache.cassandra.cdc.api.KeyspaceTypeKey,​org.apache.cassandra.spark.data.CqlField.CqlType> typeLookup)  
      AvroSerializer​(SchemaStore schemaStore, java.util.function.Function<org.apache.cassandra.cdc.api.KeyspaceTypeKey,​org.apache.cassandra.spark.data.CqlField.CqlType> typeLookup)  
      AvroSerializer​(SchemaStore schemaStore, java.util.function.Function<org.apache.cassandra.cdc.api.KeyspaceTypeKey,​org.apache.cassandra.spark.data.CqlField.CqlType> typeLookup, int truncateThreshold)  
    • Constructor Detail

      • AvroSerializer

        public AvroSerializer​(java.util.function.Function<org.apache.cassandra.cdc.api.KeyspaceTypeKey,​org.apache.cassandra.spark.data.CqlField.CqlType> typeLookup)
      • AvroSerializer

        public AvroSerializer​(SchemaStore schemaStore,
                              java.util.function.Function<org.apache.cassandra.cdc.api.KeyspaceTypeKey,​org.apache.cassandra.spark.data.CqlField.CqlType> typeLookup)
      • AvroSerializer

        public AvroSerializer​(SchemaStore schemaStore,
                              java.util.function.Function<org.apache.cassandra.cdc.api.KeyspaceTypeKey,​org.apache.cassandra.spark.data.CqlField.CqlType> typeLookup,
                              int truncateThreshold)
    • Method Detail

      • configure

        public void configure​(java.util.Map<java.lang.String,​?> configs,
                              boolean isKey)
        Specified by:
        configure in interface org.apache.kafka.common.serialization.Serializer<org.apache.cassandra.cdc.msg.CdcEvent>
      • serialize

        public byte[] serialize​(java.lang.String topic,
                                org.apache.cassandra.cdc.msg.CdcEvent event)
        Specified by:
        serialize in interface org.apache.kafka.common.serialization.Serializer<org.apache.cassandra.cdc.msg.CdcEvent>
      • serialize

        public byte[] serialize​(java.lang.String topic,
                                org.apache.kafka.common.header.Headers headers,
                                org.apache.cassandra.cdc.msg.CdcEvent data)
        Specified by:
        serialize in interface org.apache.kafka.common.serialization.Serializer<org.apache.cassandra.cdc.msg.CdcEvent>
      • close

        public void close()
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface org.apache.kafka.common.serialization.Serializer<org.apache.cassandra.cdc.msg.CdcEvent>
      • deserialize

        @Deprecated
        public CdcEnvelope deserialize​(java.lang.String keyspace,
                                       java.lang.String table,
                                       byte[] data)
        Deprecated.
        Deserialize the data and return a pair of cdc update and cdc record The left of the pair is the cdc update of a table. The right of the pair is the header/metadata.
        Parameters:
        keyspace - Cassandra keyspace
        table - Cassandra table
        data - raw serialized Avro message
        Returns:
        deserialized CdcEnvelope wrapping the payload and header.