Skip to main content

Does Unity Catalog support Iceberg tables now?

Summary

  • Yes. On Databricks, Unity Catalog managed Apache Iceberg tables, foreign Iceberg tables and Iceberg v3 features became generally available on May 21, 2026, so you can create, read, write and govern Iceberg tables directly in Unity Catalog.
  • Open-source Unity Catalog added full Iceberg table support in release 0.7.0: any engine that speaks the Apache Iceberg REST protocol can create, write, read, rename and drop Iceberg tables in it.
  • External engines reach Unity Catalog through the Iceberg REST Catalog API. Managed Iceberg tables are readable and writable through it; foreign Iceberg tables and Delta tables with Iceberg reads are read-only.
  • Delta Lake tables don't have to be converted. Iceberg reads (UniForm) make a Delta table generate Iceberg metadata so Iceberg clients can read it.
  • Support has documented limits on Databricks, including Parquet-only data files, no branching or tagging, and no Iceberg v2 position or equality deletes.

Does Unity Catalog support Iceberg tables now?

Yes, in both the open-source project and the Databricks platform. Apache Iceberg is a first-class table format in Unity Catalog: you can create Iceberg tables in it, write to them from Databricks or from any Iceberg REST client, and govern them with the same privileges you use for Delta Lake tables. On Databricks, managed Iceberg tables, foreign Iceberg tables and Iceberg v3 features have been generally available since May 21, 2026. In Unity Catalog OSS, release 0.7.0 ships "Full Apache Iceberg Table Support with Iceberg REST Catalog".
The more useful question is which kind of Iceberg support you need, because a catalog can own Iceberg tables, read Iceberg tables owned by another catalog, or publish Delta tables as Iceberg. Unity Catalog does all three, and the read and write rules differ for each.

The four kinds of Iceberg support

Capability What it is Who can write
Managed Iceberg table An Iceberg table created in Unity Catalog. Unity Catalog handles snapshot expiration and file compaction. Databricks, plus external engines through the Iceberg REST Catalog API
Foreign Iceberg table An Iceberg table whose metadata lives in an external catalog. Databricks reads it through Lakehouse Federation. Read-only in Databricks
Iceberg reads (UniForm) A Delta Lake table that also generates Iceberg metadata Delta writers only; Iceberg clients read
Iceberg REST Catalog API The open API that external engines use to discover and access all of the above Depends on the table type

Iceberg in open-source Unity Catalog

The OSS server exposes the Iceberg REST protocol at /api/2.1/unity-catalog/iceberg. A client works with one Unity Catalog catalog at a time as its warehouse, and each Iceberg namespace maps to a Unity Catalog schema. Namespaces don't nest.
Release 0.7.0 turns native Iceberg tables on by default. The endpoint lists Iceberg tables, plus Delta tables that carry UniForm Iceberg metadata; any other Delta table needs a Delta client. The server vends short-lived S3 credentials, and with authorization enabled, writing requires the MODIFY privilege. Without it, the server vends read-only credentials.
Client coverage differs. The OSS docs show Spark running INSERT, UPDATE, DELETE and MERGE INTO, DuckDB running INSERT, UPDATE and DELETE, and PyIceberg supporting append, delete and overwrite but not UPDATE. Connecting PyIceberg to a local server looks like this (the local server has authorization disabled and accepts any token value):

from pyiceberg.catalog import load_catalog

catalog = load_catalog(
    "retail",
    type="rest",
    uri="http://localhost:8080/api/2.1/unity-catalog/iceberg",
    warehouse="retail",
    token="not-used",
)
catalog.create_namespace("staging")
print(catalog.list_namespaces())

How Databricks approaches Iceberg in Unity Catalog

On Databricks you create a managed Iceberg table by naming the format. Without USING iceberg, Databricks creates a Delta Lake table by default.

CREATE TABLE <catalog-name>.<schema-name>.<table-name>(
  <column-specification>)
USING iceberg;

Managed Iceberg tables work with liquid clustering and Predictive Optimization, which must be enabled before you can create them. Requirements are a Unity Catalog-enabled workspace, Databricks Runtime 16.4 LTS or above, and serverless compute. Iceberg v3 features (deletion vectors, the VARIANT type and row lineage) are GA on managed Iceberg tables, foreign Iceberg tables and managed Delta tables with UniForm.
External engines connect to /api/2.1/unity-catalog/iceberg-rest. External data access must be enabled on the metastore, and the principal configuring the integration needs EXTERNAL USE SCHEMA on the schema. Databricks recommends credential vending to control access to cloud storage for clients that support it.
Unity Catalog also keeps Iceberg tables portable. Databricks documents that "With UNREGISTER, you can remove a table from Unity Catalog and register it in another Iceberg REST catalog, without copying data files."

Limits to check before you migrate

  • Data files must be Apache Parquet. Databricks supports Iceberg specification versions 1, 2 and 3.
  • Row-level deletes use Iceberg v3 deletion vectors. Iceberg v2 position and equality deletes aren't supported.
  • Branching and tagging aren't supported, and foreign tables expose only the main branch.
  • External Iceberg engines can't read Unity Catalog views.
  • Expression-based partition transforms such as years(), months(), days(), hours() and bucket() aren't supported on managed tables.
  • Foreign Iceberg tables aren't refreshed automatically when read through the Iceberg REST Catalog API.

FAQs

Can Apache Spark outside Databricks write to a Unity Catalog Iceberg table?

Yes, for managed Iceberg tables. Configure Spark's Iceberg REST catalog against the Unity Catalog endpoint and authenticate with OAuth or a personal access token. Foreign Iceberg tables and Delta tables with Iceberg reads are read-only through that API.

Do I have to convert my Delta tables to Iceberg?

No. Iceberg reads (UniForm) make a Delta table generate Iceberg metadata automatically. The table must be registered in Unity Catalog with column mapping enabled, and writes must use Databricks Runtime 14.3 LTS or above.

Is Iceberg support in Unity Catalog OSS stable?

It ships in release 0.7.0, but the project README says its APIs "are currently evolving and should not be assumed to be stable". Pin your server and client versions and test before you depend on them in production.

Which Iceberg client version should I use with Databricks?

Databricks recommends Iceberg client version 1.9.2 or later for reading and writing through Unity Catalog.

The information provided herein is for general informational purposes only and may not reflect the most current product capabilities or configurations.