Skip to main content
What this does: Builds a full streaming lakehouse pipeline — CDC from PostgreSQL and events from Kafka flow through RisingWave transformations and land in Iceberg tables with automatic compaction. When to use this: You want to build or extend a data lakehouse with fresh data, without managing Debezium, Kafka connectors, Flink jobs, and Iceberg maintenance separately.

Setup

1. Ingest database changes via CDC

2. Ingest events from Kafka

3. Create enriched views

4. Sink to Iceberg

Key points

  • Use type = 'upsert' for tables with changing state (CDC tables, aggregating MVs); type = 'append-only' only for truly append-only streams with no retractions
  • RisingWave hosts the Iceberg catalog and runs compaction automatically — no Spark compaction jobs needed
  • The JOIN between CDC tables and streams is maintained incrementally — when customer data changes, enriched_orders updates automatically
  • For production, use a proper Iceberg catalog (Glue, REST, Hive) instead of catalog.type = 'storage'

Next steps