Skip to main content

Apache Polaris Iceberg catalog with OLake Go

Apache Polaris is an open-source Iceberg REST (representational state transfer) catalog that several engines can share, with its own access control.

Short answer. To write Iceberg tables to Polaris, create an OLake Go destination with catalog_type: polaris, the Polaris REST endpoint, and OAuth2 client credentials or a token. Trino, Spark, DuckDB, ClickHouse, Doris and StarRocks read Polaris as a REST catalog. Snowflake reads it through a read-only catalog integration.

Key takeaways

  • Apache Polaris is an open-source Iceberg REST catalog that several engines share, with its own access control.
  • OLake Go writes to it with OAuth2 client credentials or a token, and Trino, Spark, DuckDB, ClickHouse, Doris and StarRocks read it.
  • Fourteen guides ran end to end on Polaris, including the six Apache Iceberg guides.

Last reviewed October 2026.

How OLake Go writes to Apache Polaris​

OLake Go uses change data capture (CDC) where the source has it. It commits Iceberg tables to Polaris over the Iceberg REST protocol. You host Polaris yourself, next to the object storage it points at.

Fourteen guides ran end to end on Polaris: six for Apache Iceberg, six for ClickHouse and two for DuckDB. The Polaris post and the Polaris IAM setup page cover the catalog side.

When to use it​

  • Several engines should share one open catalog with access control.
  • You can run the catalog yourself, in Docker or Kubernetes.

When not to use it​

  • You want a managed catalog with no server to run. AWS Glue and the vendor catalogs are managed.
  • Redshift is a reader. It reaches Polaris only through Lake Formation catalog federation.

What OLake Go needs

  • catalog_type: polaris
  • Authentication OLake Go offers: OAuth2 client credentials, Token, None.
  • Full destination reference: Apache Polaris setup.

Engines that read Apache Polaris

EngineReadsHow
Amazon RedshiftPartialLake Formation catalog federation only
Apache DorisYesREST catalog with OAuth2
Apache SparkYestype=rest with OAuth2
ClickHouseYesDataLakeCatalog with catalog_type rest
DuckDBYesATTACH to the REST endpoint
PrestoYesREST catalog with OAuth2
SnowflakeYescatalog integration (read-only) (Not yet tested on this site.)
Spark on Amazon EMRYesREST catalog
StarburstYesPolaris catalog (public preview in Galaxy)
StarRocksYesREST catalog with OAuth2
TrinoYesREST catalog with OAuth2

Each engine row comes from that engine's vendor documentation. The dated sources are on the engine's page, linked in the first column.

Guides that use Apache Polaris

Frequently asked questions​

How does OLake Go authenticate to Polaris?

With OAuth2 client credentials, a token, or no authentication. The REST catalog page lists the fields.

Which engines read Polaris?

Trino, Spark, DuckDB, ClickHouse, Doris, StarRocks, Presto and Spark on EMR as a REST catalog, Snowflake through a catalog integration, and Starburst Galaxy in public preview.

Is there a tested guide on Polaris?

Yes. The ClickHouse and DuckDB guides listed below ran on Polaris, with Trino reading the same tables.