> ## Documentation Index
> Fetch the complete documentation index at: https://docs.risingwave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Apache Iceberg integration

> Use RisingWave as a streaming lakehouse with native Apache Iceberg support. Create and manage Iceberg tables directly in RisingWave, or connect to externally managed Iceberg tables. Supports MoR, CoW, compaction, and REST catalog.

RisingWave supports two interaction modes with Apache Iceberg: **internally managed Iceberg tables** (often called RisingWave-managed Iceberg tables) and **externally managed Iceberg tables**.

In [internally managed Iceberg tables](/iceberg/ov-internal), RisingWave manages the entire lifecycle of the Iceberg tables, including the catalog, compaction, and ingestion processes. RisingWave provides a PostgreSQL-compatible interface for accessing Iceberg data and ensures interoperability with all major query engines. This mode offers the simplest way to build a Medallion architecture.

In [externally managed Iceberg tables](/iceberg/ov-external), RisingWave connects to Iceberg tables managed by external systems. RisingWave can both read from and write to these tables, enabling seamless data exchange across different environments.

Rule of thumb: **Internal tables → `CONNECTION` + `ENGINE = iceberg`**. **External tables → `SOURCE` (read) / `SINK` (write)**.

| Concept      | When / what (internal vs external)                                                                                                                       | Key SQL                                                               |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| `CONNECTION` | **Internal** — save Iceberg **catalog + object storage** config for `ENGINE = iceberg`. See [Internal Iceberg tables](/iceberg/internal-iceberg-tables). | `CREATE CONNECTION` + `SET iceberg_engine_connection = 'schema.conn'` |
| `SINK`       | **External** — write streaming results **to an external Iceberg table**. See [Deliver to external Iceberg](/iceberg/deliver-to-iceberg).                 | `CREATE SINK ... WITH (connector = 'iceberg', ...)`                   |
| `SOURCE`     | **External** — read an **external Iceberg table** into RisingWave. See [Ingest from external Iceberg](/iceberg/ingest-from-iceberg).                     | `CREATE SOURCE ... WITH (connector = 'iceberg', ...)`                 |

## RisingWave in a medallion architecture

RisingWave bridges **real-time streaming systems** with **Iceberg-based data lakes**.

It functions as the **continuous ingestion, transformation, and maintenance service** within a Medallion architecture, ensuring that data seamlessly transitions from raw sources to optimized, query-ready Iceberg tables through incremental computation and cascading materialized views.

<img src="https://mintcdn.com/risingwavelabs/ARWFiFESN7RwbOEk/iceberg/images/rw-lakehouse.png?fit=max&auto=format&n=ARWFiFESN7RwbOEk&q=85&s=c4921abd637b54fa0bec235ba7493c71" alt="image" width="2599" height="1120" data-path="iceberg/images/rw-lakehouse.png" />

## Next steps

* [Quick start: Iceberg in 10 minutes (AWS)](/iceberg/quick-start)
* [Review supported Iceberg features](/iceberg/iceberg-feature-support)
* Learn more about the [internal Iceberg tables](/iceberg/ov-internal) and [external Iceberg tables](/iceberg/ov-external).
* [Create and manage internal Iceberg tables](/iceberg/internal-iceberg-tables)
* [Ingest data from external Iceberg tables](/iceberg/ingest-from-iceberg)
* [Deliver to external Iceberg tables](/iceberg/deliver-to-iceberg)
