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
JOINbetween 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
- Iceberg overview — catalog types, write modes, table maintenance
- PostgreSQL CDC reference — full CDC options