Kafka Pipeline Using Avro Format
On this page
Kafka pipelines can use Avro-formatted data for ingestion with the following minimum required syntax:
CREATE PIPELINE <pipeline_name> ASLOAD DATA KAFKA '<host.example.com/my-topic>'INTO TABLE <table_name>FORMAT AVRO;
To skip errors without skipping the entire batch, use the SKIP PARSER ERRORS clause.
CREATE PIPELINE <pipeline_name> ASLOAD DATA KAFKA '<host.example.com/my-topic>'INTO TABLE <table_name>SKIP PARSER ERRORSFORMAT AVRO;
The SKIP ALL ERRORS clause can also be used to skip all failed messages when added to the CREATE PIPELINE statement.
CREATE PIPELINE <pipeline_name> ASLOAD DATA KAFKA '<host.example.com/my-topic>'INTO TABLE <table_name>SKIP ALL ERRORSFORMAT AVRO;
Refer to SKIP ALL ERRORS for more information.
Important
The use of SKIP PARSER ERRORS and SKIP ALL ERRORS along with WITH TRANSFORM is not supported.
If the SKIP PARSER ERRORS clause is added during create pipeline, the pipelines_ configuration will be ignored.
-
The warning message will be logged in the
pipelines_table, adding the Kafka message in theerrors LOAD_column.DATA_ LINE -
The entire Kafka message which has the parse error will be logged.
-
Skip the message and move to the next Kafka message.
If the SKIP PARSER ERRORS clause is not added during create pipeline, the default behavior will remain the same.
-
Error messages will be logged in the
pipelines_table, adding the Kafka message in theerrors LOAD_column.DATA_ LINE -
The pipeline will stop or skip the current batch and move to the next batch based on whether the
pipelines_variable is set to true or false.stop_ on_ error -
The engine variable
pipelines_will stop or skip the current batch if the number of errors exceeds the threshold value.parse_ errors_ threshold This depends on whether the pipelines_variable is set to true or false.stop_ on_ error Note
Refer to PIPELINES_
BATCHES_ SUMMARY for more details about batches.
Avro to JSON Type Conversions
SingleStore pipelines convert Avro data types to SQL data types during ingestion as follows:
-
Primitive types: Avro primitive types, such as boolean, numbers, and strings, are first converted to strings and then cast to their closest matching SQL equivalents.
Note
If an Avro string contains raw binary data (including non-UTF8 characters), each byte is represented as a Unicode escape sequence in the form
\u00XX.For example, the byte sequence '\xC0\xC1'is serialized as'\u00C0\u00C1'. -
Complex types: The following Avro types are encoded using the Avro JSON encoder:
-
Records: Encodes the fields (in the sequence they are declared) as a JSON object.
-
Array: Encodes a homogeneous array of values to a JSON array.
-
Map: Encodes a homogeneous map of key-value pairs from string keys (
map<string T>) to values as a JSON object with string keys. -
Union: If its type is
NULL, it is encoded as JSONnull.Otherwise, it is encoded as a JSON object with type metadata. For example, ["null","string"]with an active string branch is encoded as{"string":"hello"}; when the active branch isnull, it is encoded as JSONnull.
-
Refer to Specification | Apache Avro for related information.
For example, consider the following Avro schema:
{"type": "record","name": "Event","namespace": "com.example","fields": [{ "name": "id", "type": "int" },{ "name": "name", "type": "string" },{ "name": "score", "type": "float" },{ "name": "active", "type": "boolean" },{ "name": "payload", "type": {"type": "record","name": "Payload","fields": [{ "name": "tag", "type": "string" },{ "name": "count", "type": "long" }]}},{ "name": "tags", "type": {"type": "array","items": "string"}},{ "name": "props", "type": {"type": "map","values": "long"}},{ "name": "maybe_str", "type": ["null", "string"], "default": null }]}
and the following Avro data:
{"id": 42,"name": "alpha","score": 9.5,"active": true,"payload": { "tag": "t1", "count": 1234567890123 },"tags": ["a", "b"],"props": { "k1": 1, "k2": 2 },"maybe_str": "hello"}
The Avro data is represented in JSON as follows:
{"id": 42,"name": "alpha","score": 9.5,"active": true,"payload": { "tag": "t1", "count": 1234567890123 },"tags": ["a", "b"],"props": { "k1": 1, "k2": 2 },"maybe_str": { "string": "hello" }}
The following table shows the Avro fields types to equivalent SQL types mapping in this example:
|
Field |
Avro Type |
SQL Type |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Last modified: December 5, 2025