Skip to main content
RisingWave supports Apache Iceberg in three main workflows:
  • Read external Iceberg tables with CREATE SOURCE, ad hoc queries, materialized views, or refreshable CREATE TABLE.
  • Write to external Iceberg tables with CREATE SINK.
  • Create internal Iceberg tables with CREATE TABLE ... ENGINE = iceberg, where RisingWave manages the table lifecycle and stores data in Iceberg format.
This page summarizes the current feature support. For syntax and examples, follow the linked pages in each section.

Support overview

Reading from Iceberg

For configuration details, see Ingest data from Iceberg tables.

Writing to Iceberg

For configuration details, see Deliver data to Iceberg tables and Iceberg write modes.

Internal Iceberg tables

For configuration details, see Create and manage internal Iceberg tables.

Catalog and storage support

For complete catalog parameters, see Iceberg catalog configuration. For storage parameters, see Object storage configuration.

Maintenance support

For setup and sizing, see Deploy a dedicated Iceberg compactor and Iceberg table maintenance.

Important limitations

  • CREATE SOURCE for Iceberg is intended for append-only continuous ingestion. Use refreshable CREATE TABLE with FULL_RELOAD for mutable external Iceberg tables.
  • Do not define columns in an Iceberg CREATE SOURCE; RisingWave infers the schema from Iceberg metadata.
  • refresh_mode is supported for CREATE TABLE, not CREATE SOURCE.
  • Append-only Iceberg sinks and append-only internal Iceberg tables must use merge-on-read mode.
  • Additive schema evolution currently covers ADD COLUMN; column drops, renames, and type changes require separate handling.
  • Catalog integrations can have role-specific limits. For example, Snowflake catalog is read-only in RisingWave, while the Databricks Unity Catalog integration is documented for Iceberg sinks.