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, commonly used in Kafka ecosystems with Confluent Schema Registry.

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

When confluent_schema_registry: true:
  • Sources: Ingest Engine fetches the schema from the registry and uses it for deserialization
  • Sinks: Ingest Engine registers the schema with the registry so downstream consumers can read the data

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 October 1, 2026