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