RisingWave includes a built-in Iceberg catalog for internal Iceberg tables. It uses the same metastore database that RisingWave is configured with (via its metadata backend) as a JDBC-compliant Iceberg catalog, so you don’t need to deploy or manage a separate catalog service.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.
Prerequisite: The built-in catalog (
hosted_catalog = true) requires RisingWave’s metastore backend to be PostgreSQL or MySQL. SQLite is not supported for internal Iceberg tables with the built-in catalog.If you use Standalone mode, RisingWave uses embedded SQLite for the metastore by default, so the built-in catalog is not supported by default. See Standalone mode.How it works (high level)
When you create an internal Iceberg table, there are two kinds of state involved:- Data files: Stored in your object storage (S3 / GCS / Azure Blob / etc.).
- Iceberg metadata: Managed by an Iceberg catalog — a metadata service that tracks the table schema, snapshots, and data file locations. In this guide, the “catalog” is RisingWave’s built-in catalog (
hosted_catalog = true), and the metadata is stored in RisingWave’s configured metastore database (PostgreSQL or MySQL).
hosted_catalog = true in an Iceberg CONNECTION, and RisingWave manages the Iceberg metadata in its own metastore.
Because the built-in catalog is JDBC-compliant, external engines like Spark or Trino can connect to it and query the same Iceberg tables (using the same catalog endpoint and the same object storage).
Create and test an internal Iceberg table
Step 1: Create an Iceberg connection (built-in catalog)
A
CONNECTION is simply a saved config profile in RisingWave.You create it once with CREATE CONNECTION ..., and then reuse it by name — either for the current session (SET iceberg_engine_connection = 'schema.connection_name') or globally for all sessions (ALTER SYSTEM SET iceberg_engine_connection = 'schema.connection_name').CONNECTION stores two things in one place:
- Object storage settings (for the data files), such as
warehouse.pathands3.*. - Catalog settings (for metadata). For the built-in catalog, this is
hosted_catalog = true.
Step 2: Set the connection and create a table
When you createENGINE = iceberg tables, RisingWave needs to know which Iceberg CONNECTION to use. Set the connection before creating the table — either for the current session or globally for all sessions.
The connection name format is schema_name.connection_name (for example, public.built_in_catalog_conn).
Complete Guide: Create and manage internal Iceberg tables
For more details (partitioning, maintenance, external access, limitations), see this topic.