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.

Per-table metadata relations

You can query metadata for a single Iceberg object through relation names with an Iceberg metadata suffix:
These relations are supported for:
  • Iceberg engine tables created with CREATE TABLE ... ENGINE = iceberg
  • Iceberg sources created with CREATE SOURCE ... WITH (connector = 'iceberg', ...)
  • Standalone Iceberg sinks created with CREATE SINK ... WITH (connector = 'iceberg', ...)
You can use normal batch SELECT operations such as projection, filters, and LIMIT when querying these relations. Time travel is supported for $manifests and $files with FOR SYSTEM_TIME AS OF or FOR SYSTEM_VERSION AS OF, but not for $snapshots.

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.