iyashk-DB
Databricks Employee
Databricks Employee

Databricks doesn’t support the LOCATION clause for Iceberg in Unity Catalog; Iceberg tables must be created as managed tables without a path, or read via a foreign catalog. Trying USING iceberg LOCATION 's3://...' triggers “Managed Iceberg tables do not support REPLACE on external tables.” because path-based external Iceberg tables aren’t supported in UC.

With Iceberg, the metadata file path changes on every commit; connecting by a fixed storage location (path) is not the right way to load the table, which is why UC requires a catalog-based approach rather than a LOCATION-based external table.

Some recommendations would be:

 

  • If you need governed read/write from Databricks and external engines, create a Managed Iceberg table in UC (no LOCATION) and connect your external Spark job to UC via the Iceberg REST Catalog.

  • If you only need to read the existing table and it’s in Glue/HMS, set it up as Foreign Iceberg via federation, and CTAS into a managed table if you later need writes in Databricks.

  • If your requirement is “external table by path,” note that this is supported for Delta external tables, but not for Iceberg in UC.

 

View solution in original post