Skip to main content

Choosing a Format


JSON

The most common format for streaming data. Supports structured (schema-mapped) and unstructured (single text column) modes.

Options

Structured JSON

By default, JSON is parsed into columns according to the table schema. Each field in the JSON object maps to a field defined in the fields array:

Unstructured JSON

When unstructured: true, the entire JSON payload is stored as a single text column. Use SQL JSON functions to extract fields at query time:

Debezium CDC

When debezium: true, Ingest Engine expects the Debezium envelope format with before, after, and op fields. Use this with the CDC connector or any Debezium-compatible source:

Avro

Apache Avro binary format. Kafka and Confluent sources can read Avro events registered in Confluent Schema Registry or AWS Glue Schema Registry. See the Schema Registry guide to discover source columns automatically or enable multi-table routing.

Options

Serialization Modes

Avro supports two serialization modes:
  • Raw datums (raw_datums: true) - just the data, no schema. Readers must have the exact schema. This is the mode used with Schema Registry, which distributes schemas separately.
  • Complete records (default) - schema is embedded in every record. Self-describing but larger on the wire.

Schema Registry Integration

For Kafka and Confluent registry sources, select the provider and its connection settings under config.schema_registry_provider and config.schema_registry. You do not need to set the Avro confluent_schema_registry option yourself. With config.multi_schema: false, the latest schema supplies named source columns. Optionally set config.value_subject to override the schema name for AWS Glue or the subject name for Confluent. With config.multi_schema: true, omit schema and use the multi-table setup. See the Schema Registry guide for examples and schema compatibility behavior.

Parquet

Apache Parquet columnar format. Primarily used for sink tables writing to lakehouse destinations (Iceberg, Delta Lake, Filesystem).

Options

Compression Guide


Protobuf

Protocol Buffers binary format for high-throughput, strongly-typed data interchange.

Options


Raw String

Ingests or emits arbitrary UTF-8 text as a single field. Useful for log lines, CSV data, or custom text formats that you parse in SQL.
The table must have exactly one field of type Utf8 / String. Use SQL text functions or regex functions to parse the data in your pipeline query.

Raw Bytes

Ingests or emits arbitrary binary data as a single field. Use for binary protocols or custom serialization formats.
The table must have exactly one field of type Bytes.

Framing

Framing controls how incoming data is split into individual records. Only applies to source tables.

Bad Data Handling

Controls how malformed or unparseable records are handled. Only applies to source tables.
Use drop for sources where occasional malformed records are expected (e.g., user-generated webhook data). Use fail (the default) when data quality issues should halt the pipeline.
Last modified on November 6, 2026