RisingWave🔗
RisingWave is a Postgres-compatible SQL database designed for real-time event streaming data processing, analysis, and management. It can ingest millions of events per second, continuously join and analyze live data streams with historical tables, serve ad-hoc queries in real-time, and deliver fresh, consistent results.
Supported Features🔗
RisingWave supports batch reads and streaming writes of Apache Iceberg™ tables via its built-in source and sink connectors. For more information, see the Iceberg source connector documentation and Iceberg sink connector documentation.
Table Formats and Warehouse Locations🔗
Currently, RisingWave only supports the Iceberg V2 table format and S3-compatible object storage as Iceberg warehouse locations.
Catalogs🔗
RisingWave supports the following catalogs:
rest
jdbc
/sql
glue
storage
hive
See RisingWave’s Iceberg catalog documentation for more details.
Getting Started🔗
Writing Data to Iceberg Tables🔗
To write data to an Iceberg table, create a sink in RisingWave. The following example writes data from an existing table or materialized view rw_data
to an Iceberg table t1
.
CREATE SINK sink_to_iceberg FROM t1 WITH (
connector = 'iceberg',
type = 'upsert',
primary_key = 'id',
database.name = 'demo_db',
table.name = 't1',
catalog.name = 'demo',
catalog.type = 'storage',
warehouse.path = 's3a://hummock001/demo',
s3.endpoint = '<http://127.0.0.1:9301>',
s3.region = 'us-east-1',
s3.access.key = 'hummockadmin',
s3.secret.key = 'hummockadmin'
);
Note: From RisingWave 2.1, you can use the create_table_if_not_exists
parameter to create a table if it doesn't exist.
Reading from Iceberg Tables🔗
To read data from an Iceberg table, create a source in RisingWave. The following example reads data from an Iceberg table t1
.
CREATE SOURCE iceberg_t1_source WITH (
connector = 'iceberg',
s3.endpoint = '<http://127.0.0.1:9301>',
s3.region = 'us-east-1',
s3.access.key = 'hummockadmin',
s3.secret.key = 'hummockadmin',
s3.path.style.access = 'true',
catalog.type = 'storage',
warehouse.path = 's3a://hummock001/demo',
database.name = 'demo_db',
table.name = 't1',
);