Skip to main content

Apache Iceberg with OLake Go: catalogs and guides

OLake Go writes Apache Iceberg tables. The destination is an open table format and a catalog, not a single warehouse.

Short answer. To replicate a database to Apache Iceberg, run OLake Go with a source connector and an Iceberg catalog such as AWS Glue, Polaris or Lakekeeper. It writes data and delete files to object storage and commits each sync to the catalog. List every engine that will read the tables, and OLake Go picks a delete format they all read.

Key takeaways

  • OLake Go writes Apache Iceberg tables to object storage and commits each sync to a catalog such as AWS Glue, Polaris or Lakekeeper.
  • List every engine that reads the tables, and OLake Go picks a delete format they all read.
  • Six guides ran end to end on Polaris, with Spark, DuckDB and Trino reading the same tables.

Last reviewed October 2026.

How OLake Go writes Apache Iceberg​

Postgres, MySQL, MariaDB, MongoDB and SQL Server sync with change data capture (CDC). Kafka syncs as a stream, and Oracle, DB2 and S3 sync incrementally. Tables are Iceberg v2 or v3, and the catalog compatibility page lists every catalog.

The Iceberg spec defines three delete formats: equality deletes and positional deletes in v2, and deletion vectors in v3. Each engine reads its own subset. The delete formats post explains the trade-offs.

When to use it​

  • Several engines should read one copy of the replicated data.
  • You want the tables in an open format that no single vendor controls.

When not to use it​

  • You need the data in a warehouse's own storage format. OLake Go writes Iceberg and Parquet only.
  • The source is Oracle, DB2 or S3 and you need row-level CDC. OLake Go reads those sources incrementally.

Catalogs OLake Go writes Iceberg tables to

CatalogReadableHow
AWS GlueYesany engine with the Iceberg AWS bundle
Apache PolarisYesany Iceberg REST client with OAuth2
LakekeeperYesany Iceberg REST client with OAuth2
Amazon S3 TablesYesIceberg REST with SigV4
NessieYesNessie or REST client
Hive MetastoreYesHive Metastore client
JDBCYesIceberg JDBC catalog
Generic RESTYesany Iceberg REST client

Delete formats in the Iceberg spec

Equality deletes (v2)Positional deletes (v2)Deletion vectors (v3)
YesYesYes

The Iceberg spec defines all three delete formats; what a reader can open depends on the engine. OLake Go picks the format every target query engine on the job reads, so list the engines that will read the tables.

Sources: Apache Iceberg: table spec (checked 2026-10-30); Apache Iceberg: REST catalog spec (checked 2026-10-30).

Tested guides that end in Apache Iceberg

Frequently asked questions​

Which catalogs can OLake Go write Iceberg tables to?

AWS Glue, Apache Polaris, Lakekeeper, Snowflake Horizon, Unity Catalog, BigLake, Amazon S3 Tables, Nessie, Hive Metastore, JDBC and any generic Iceberg REST (representational state transfer) catalog.

Which delete format does OLake Go write?

One that every target query engine on the job reads. The engine compatibility page lists what each engine supports.

Which engines read the tables?

Spark reads every catalog and delete format. The engine pages under Integrations, such as Trino and Snowflake, list the rest.