Bruin — Iceberg on your laptop
Loads two tables from Frankfurter, a public exchange-rate API, into Apache Iceberg tables on your own disk. No cloud account, no credentials, no services to start.
raw/currencies.asset.yml— the list of currency codes and names.raw/exchange_rates.asset.yml— the latest rates.
Run it
bruin run iceberg-sqlite-localThat is the whole setup. The connection in .bruin.yml needs nothing filled in:
iceberg:
- name: "iceberg-default"
catalog:
type: sqlite
path: "catalog.db" # relative to .bruin.yml
storage:
type: local
path: "warehouse" # relative to .bruin.ymlAfterwards, catalog.db holds the table metadata and warehouse/ the data:
warehouse/raw.db/currencies/data/00000-0-….parquet
warehouse/raw.db/currencies/metadata/00001-….metadata.jsonRead them back with DuckDB:
SET unsafe_enable_version_guessing = true;
SELECT * FROM iceberg_scan('warehouse/raw.db/currencies');Notes
An Iceberg connection is a catalog (where table metadata lives) and storage (where the data files go). This template picks the simplest of each: a SQLite file and a local directory. Everything else — Glue, REST, Postgres, Hive, and S3 or GCS storage — swaps in by changing those two blocks only. The assets never change.
Not for production — the point is to see Iceberg work before committing to infrastructure. See the Iceberg docs for the real backends.