External Iceberg tables
External Iceberg tables are managed outside of RisingWave, such as S3 Tables, Snowflake-managed Iceberg tables, Databricks-managed Iceberg tables, or self-managed Iceberg deployments. RisingWave connects to these tables through their catalogs and treats them as data sources or data sinks.
Reading from external Iceberg tables
RisingWave can continuously read data from append-only Iceberg tables. It monitors snapshots and automatically loads newly appended data, allowing you to consume the table as a live data stream. ExampleAd hoc analytics on Iceberg data
After the source is created, you can query it directly with SQL. RisingWave retrieves the current snapshot of the Iceberg table at query time.Continuous analytics with materialized views
For real-time, incremental analytics, create a materialized view on the Iceberg source. RisingWave automatically keeps the view up to date as new snapshots are committed to the Iceberg table.Writing to external Iceberg tables
RisingWave can also write query results or materialized view outputs to Iceberg tables. The resulting data remains fully compatible with other Iceberg engines such as Spark, Trino, and DuckDB.- Supports
append-only
,upsert
, andforce-append-only
data modes - Guarantees exactly-once delivery
- Can perform optional file compaction for efficiency
Internal Iceberg tables

Creating internal Iceberg tables
You can create internal Iceberg tables using standard SQL syntax.Catalog service
RisingWave provides two hosted catalog options for managing Iceberg metadata, schema versions, and table state:- JDBC hosted catalog — backed by RisingWave’s internal PostgreSQL-compatible metastore. See JDBC hosted catalog
- REST hosted catalog — powered by Lakekeeper and compatible with the Iceberg REST catalog API. See REST hosted catalog
Compaction service
RisingWave provides a built-in compaction service that automatically merges small Parquet files, expires outdated snapshots, and maintains efficient file layouts. This ensures good query performance and stable storage usage during continuous ingestion. Using RisingWave’s compaction service is optional. You can also connect an external compactor such as Tabular’s Iceberg compactor, Databricks-managed compaction, Amazon EMR, or a self-hosted Spark job. When using an external compactor, RisingWave writes data in a compaction-friendly format that allows other systems to safely perform maintenance. Compaction can be enabled or disabled per table or configured globally depending on performance and cost requirements.Catalog and compaction summary
Component | Default Option | Alternative Options | Description |
---|---|---|---|
Catalog service | RisingWave built-in REST catalog | Glue, Hive, Nessie, or custom REST catalogs | Stores metadata and schema information |
Compaction service | RisingWave built-in compactor | Amazon EMR, or self-hosted Spark | Optimizes file layout and merges small Parquet files |
Typical architecture
Summary
Capability | External Iceberg Tables | Internal Iceberg Tables |
---|---|---|
Read support | Continuous and ad-hoc queries | Supported |
Write support | Append, upsert, or force-append-only | Fully managed by RisingWave |
Catalog ownership | External system | RisingWave or external catalog |
Compaction | Optional via sink or external compactor | Optional via RisingWave or external compactor |
Interoperability | Compatible with other Iceberg engines | Compatible with Iceberg standard |
Typical use | Connect to existing Iceberg data | Persist computed or aggregated data |
Choosing between external and internal tables
- Use external Iceberg tables if you already have an Iceberg environment such as S3 Tables, Snowflake, or Databricks, and want RisingWave to process or update that data.
- Use internal Iceberg tables if you want RisingWave to handle both computation and Iceberg data management with its built-in catalog and compaction services.
- Combine both approaches to build a unified, real-time lakehouse architecture.
Next steps
- Read from Iceberg tables
- Write to Iceberg tables
- Create and manage internal Iceberg tables
- Configure catalogs and compaction services