Skip to content

Iceberg Output

Writes compacted batches to Apache Iceberg tables using a configured catalog (Skipprd, Glue, REST, Unity, or Polaris).

Pair with the Iceberg schema sink when catalog DDL should run through schema_sinks instead of inline on every write.

Configuration

yaml
data_sinks:
  lake:
    Iceberg:
      catalog:
        type: glue
        warehouse: s3://my-iceberg-warehouse/
        database: analytics
        region: us-east-1
      table_namespace: bronze
      format: parquet

Skipprd catalog

Skipprd-managed Iceberg catalog. Use this for clustered query (Iceberg ∪ live WAL). Create a DynamoDB table for catalog pointers and pass its name here. This MUST NOT be the offset/lease table (SKIPPR_OFFSET_DYNAMODB_TABLE).

yaml
catalog:
  type: skippr
  table: my-iceberg-catalog
  warehouse: s3://my-iceberg-warehouse/
  region: us-east-1

Glue catalog

yaml
catalog:
  type: glue
  warehouse: s3://my-iceberg-warehouse/    # required — table storage root
  database: analytics                       # optional Glue database name
  catalog_id: "123456789012"               # optional — cross-account catalog
  region: us-east-1

REST / Unity / Polaris catalogs

yaml
catalog:
  type: rest
  uri: https://iceberg.example.com/catalog
  warehouse: analytics

Unity and Polaris use the same uri + warehouse shape with optional auth fields (token, client_id, client_secret).

FieldDefaultDescription
catalog(required)Catalog connection (see above)
table_namespaceNamespace segment for table identifiers
table_prefixPrefix prepended to each namespace table name
table_location_prefixOverride base path for new tables
propertiesExtra Iceberg table properties (map)
formatparquetFile format for data files
query_engineOptional Athena query engine

Iceberg stays Iceberg. Model and query use query_engine on this sink. Do not project Iceberg YAML into a separate Athena: block.

yaml
query_engine:
  type: athena
  workgroup: primary

Supported write policies

Contract-aware sources can use this sink when landing semantics require merge or partition replace:

PolicySupported
appendYes
merge_by_keyYes
replace_partitionYes
replace_tableYes

See Source landing semantics.

Pipeline wiring

yaml
pipelines:
  reports:
    data_source: data_sources.saas
    data_sink: data_sinks.lake
    schema_sink: schema_sinks.iceberg_catalog

AWS permissions (Glue catalog)

When using type: glue, the runtime identity needs S3 read/write on the warehouse path and Glue catalog permissions for databases, tables, and commits.

This site is source-available under PolyForm Shield 1.0.0