R2 Data Catalog: Bring Your Own Engine

2026-01-27
R2 Data Catalog
Bring Your Own EngineR2 Data Catalog
Cloudflare

Connect Any Iceberg-Compatible Engine

Standard REST Catalog API means you're never locked in to a single tool

Apache Spark
Big data processing
Popular
DuckDB
Fast local analytics
Popular
PyIceberg
Python native access
Snowflake
Enterprise warehouse
Trino
Distributed SQL
Flink
Stream processing
Databricks
Unified analytics
R2 SQL
Cloudflare native
New
PyIceberg
from pyiceberg.catalog.rest import RestCatalog
catalog = RestCatalog(
name="r2_catalog",
uri="https://<CATALOG_URI>",
warehouse="<WAREHOUSE>",
credential="<API_TOKEN>"
)
# List all tables
for table in catalog.list_tables("default"):
print(table)
# Query with PyArrow
table = catalog.load_table("default.events")
df = table.scan().to_pandas()
DuckDB
-- Attach R2 Data Catalog
ATTACH 'r2://<WAREHOUSE>' AS r2_warehouse (
TYPE ICEBERG,
ENDPOINT '<CATALOG_URI>',
TOKEN '<API_TOKEN>'
);
-- Query directly from R2
SELECT
event_type,
COUNT(*) as events
FROM r2_warehouse.default.events
WHERE event_time > '2025-01-01'
GROUP BY event_type;