Class AvroGenericRecordSerializer

  • 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 AvroGenericRecordSerializer
    extends java.lang.Object
    implements KafkaCdcSerializer<org.apache.cassandra.cdc.msg.CdcEvent>
    Serializes Cassandra CDC POJO classes to Avro bytes for publishing to Kafka. Optional logical type conversions can be applied via RecordReader to convert data to CQL-appropriate types.
    • Constructor Summary

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

      • AvroGenericRecordSerializer

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

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

        public AvroGenericRecordSerializer​(SchemaStore schemaStore,
                                           java.util.function.Function<org.apache.cassandra.cdc.api.KeyspaceTypeKey,​org.apache.cassandra.spark.data.CqlField.CqlType> typeLookup,
                                           int truncateThreshold,
                                           java.lang.String schemaNamespacePrefix)
    • 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,
                                       org.apache.avro.Schema schema)
        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 - serialized Avro message
        schema - Avro schema
        Returns:
        returned deserialized CdcEnvelope wrapping the payload and header