Skip to main content

Can Databricks read and write native Iceberg tables in 2026?

Summary

  • Yes. As of October 2026, Databricks reads and writes Unity Catalog managed Iceberg tables, and its May 21, 2026 release notes list managed Iceberg tables, foreign Iceberg tables and Iceberg v3 features as generally available.
  • Foreign Iceberg tables, whose metadata lives in another catalog such as a Hive metastore, are read-only in Databricks and are read through Lakehouse Federation.
  • Unity Catalog ships its own Apache Iceberg REST catalog, served from /api/2.1/unity-catalog/iceberg-rest. External engines can read and write managed Iceberg tables, and read foreign Iceberg tables and Delta tables with Iceberg reads enabled.
  • With Iceberg reads (UniForm) enabled, Databricks writes Iceberg metadata next to a Delta table's own metadata, so Iceberg clients read the existing Parquet files with no rewrite. Those clients can't write to the table.
  • Databricks supports Parquet-based Iceberg tables on spec versions 1, 2 and 3. Managed and foreign tables need Unity Catalog and Databricks Runtime 16.4 LTS or above.

Can Databricks read and write native Iceberg tables in 2026?

Yes, with one distinction that decides everything: who owns the table's metadata. Iceberg tables you create in Unity Catalog are managed Iceberg tables. Databricks reads and writes them, and so can any engine that speaks the Apache Iceberg REST catalog protocol. Iceberg tables owned by another catalog are foreign Iceberg tables, which Databricks reads but doesn't write. Databricks' release notes of May 21, 2026 moved managed Iceberg tables, foreign Iceberg tables and Iceberg v3 features to general availability.

What "native Iceberg" means here

An Apache Iceberg table is a set of data files plus Iceberg metadata, and an Iceberg catalog returns the table's current metadata whenever an engine loads it. Apache Iceberg defines a REST-based catalog API, published as an OpenAPI specification, so engines and catalogs can interoperate through one protocol. Databricks follows the open Iceberg table format specification for every Iceberg table it supports: Parquet files, spec versions 1, 2 and 3.

Capability by capability

Capability What Databricks does What external Iceberg engines can do Stage, as documented
Unity Catalog managed Iceberg tables Reads and writes Read and write through the REST catalog GA (release notes, May 21, 2026)
Foreign Iceberg tables Reads only, through Lakehouse Federation Read only through the REST catalog GA (release notes, May 21, 2026)
Iceberg REST catalog (/api/2.1/unity-catalog/iceberg-rest) Serves Unity Catalog tables to other engines Writes are accepted for managed Iceberg tables only GA with managed Iceberg (Databricks blog, May 28, 2026)
Iceberg reads (UniForm) on Delta tables Reads and writes the table as Delta Read only GA since June 3, 2024 (Databricks blog)

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 Iceberg reads. Using them on managed tables requires Databricks Runtime 18 LTS and above.

Connect an open-source engine

External Spark sessions use Apache Iceberg's own SparkCatalog with the REST catalog type, pointed at Unity Catalog. First enable external data access on the metastore, grant the principal EXTERNAL USE SCHEMA on the schema, and authenticate with OAuth or a personal access token.

from pyspark.sql import SparkSession

spark = (SparkSession.builder
    .config("spark.jars.packages",
            "org.apache.iceberg:iceberg-spark-runtime-<spark>_<scala>:<iceberg-version>,"
            "org.apache.iceberg:iceberg-aws-bundle:<iceberg-version>")
    .config("spark.sql.catalog.uc", "org.apache.iceberg.spark.SparkCatalog")
    .config("spark.sql.catalog.uc.type", "rest")
    .config("spark.sql.catalog.uc.uri",
            "https://<workspace-url>/api/2.1/unity-catalog/iceberg-rest")
    .config("spark.sql.catalog.uc.token", "<token>")
    .config("spark.sql.catalog.uc.warehouse", "<uc-catalog-name>")
    .getOrCreate())

The runtime JAR must match your Spark and Scala versions, and the cloud bundle must match your cloud (AWS, Azure or GCP). On AWS, also set the AWS_REGION environment variable, or scans fail at runtime. Databricks recommends Iceberg client 1.9.2 and above. Inside Databricks, CREATE TABLE ... USING iceberg makes a managed Iceberg table; leave out USING iceberg and you get a Delta Lake table.

Limits to plan around

The Databricks docs list these current limits:

  • Parquet is the only supported file format.
  • For Iceberg v2, position deletes and equality deletes aren't supported; Databricks uses Iceberg v3 deletion vectors for row-level deletes.
  • Branching and tagging aren't supported.
  • Managed Iceberg tables support partition evolution only from external engines through the REST catalog, and don't support expression-based partition transforms such as bucket().
  • External engines can't read Unity Catalog views through the REST catalog.
  • Foreign Iceberg tables support time travel only to snapshots Databricks has already read.
  • Credential vending isn't supported on workspaces that use default storage.

How Databricks approaches Iceberg

Databricks treats Iceberg as a managed format in Unity Catalog, not a read-only import. Managed and foreign tables need a Unity Catalog workspace and Databricks Runtime 16.4 LTS or above, and managed tables also need serverless compute, which Databricks uses to maintain their Iceberg metadata. For managed Iceberg tables, Unity Catalog handles lifecycle tasks such as snapshot expiration and file compaction, and predictive optimization automates maintenance. The REST catalog supports credential vending, which hands external engines temporary credentials for the underlying storage; it isn't supported for foreign Iceberg tables. See What is Apache Iceberg in Databricks? and the Iceberg client access guide.

FAQs

Is Iceberg support on Databricks generally available?

Yes. Databricks' May 21, 2026 release notes announced general availability of Unity Catalog managed Iceberg tables, foreign Iceberg tables and Iceberg v3 features.

Can external engines write to my Delta tables through the Iceberg REST catalog?

No. Delta tables with Iceberg reads enabled, managed or external, are read-only through the REST catalog. Only managed Iceberg tables accept writes.

Do foreign Iceberg tables stay current?

Databricks refreshes foreign table metadata during queries when it detects that the metadata is stale. Reads through the Iceberg REST catalog aren't refreshed automatically; run REFRESH FOREIGN TABLE to read the latest snapshot.

Should I convert Delta tables to Iceberg to serve Iceberg readers?

Not for reads. Iceberg reads (UniForm) keeps a single copy of the data files for both Delta and Iceberg clients. Use managed Iceberg tables when external engines also need to write.

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