Prerequisites
- An upstream source, table, or materialized view in RisingWave to output data from.
- Existing Iceberg tables that you can deliver to, or the ability to create them via external systems.
- Appropriate permissions to deliver to the target Iceberg catalog and storage.
- Access credentials for the underlying object storage (e.g., S3 access key and secret key).
Create an Iceberg sink
To write data to an external Iceberg table, create aSINK. This statement defines how data from an upstream object should be formatted and delivered to the target Iceberg table.
Configuration parameters
For detailed storage and catalog configuration:
- Object storage: Object storage configuration
- Catalogs: Catalog configuration
commit_checkpoint_interval and commit_retry_num to manage commit frequency and retry behavior.
Schema evolution
RisingWave supports automatic schema evolution for Iceberg sinks, allowing schema changes from upstream sources to be automatically propagated to the target Iceberg table. This feature works with exactly-once semantics. To enable schema evolution, setauto.schema.change = 'true' when creating the sink:
Supported operations
Currently, RisingWave supports the following schema change operations:- ADD COLUMN: Automatically adds new columns to the Iceberg table when they are added to the upstream source.
How it works
When schema evolution is enabled:- RisingWave detects schema changes in the upstream source
- Schema changes are applied to the Iceberg table as atomic schema updates in the catalog
- The sink coordinates schema commits with data commits to ensure consistency
- In exactly-once mode, RisingWave ensures that schema changes are applied exactly once, even in the presence of failures