<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>article How to Set Up Databricks – Snowflake Interoperability With Unity Catalog and Iceberg in Technical Blog</title>
    <link>https://community.databricks.com/t5/technical-blog/how-to-set-up-databricks-snowflake-interoperability-with-unity/ba-p/128406</link>
    <description>&lt;P&gt;&lt;SPAN&gt;In this post, we’ll explore the two main approaches to integrating UC with other Iceberg environments — &lt;/SPAN&gt;&lt;STRONG&gt;Foreign Iceberg tables&lt;/STRONG&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;STRONG&gt;Managed Iceberg tables &lt;/STRONG&gt;&lt;SPAN&gt;— and walk through when to choose each, how to configure them, and the operational considerations to keep in mind.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Seamless interoperability between &lt;/SPAN&gt;&lt;STRONG&gt;Databricks Unity Catalog (UC)&lt;/STRONG&gt;&lt;SPAN&gt; and external Apache Iceberg ecosystems, such as &lt;/SPAN&gt;&lt;STRONG&gt;Snowflake Horizon&lt;/STRONG&gt;&lt;SPAN&gt;, enables organizations to use the right engine for the right workload without being locked into a single technology stack. By standardizing on Iceberg and establishing the right catalog strategy, teams can achieve &lt;/SPAN&gt;&lt;STRONG&gt;governed, engine-agnostic data sharing&lt;/STRONG&gt;&lt;SPAN&gt; while avoiding costly and unnecessary data duplication.&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot 2025-08-14 at 5.43.13 PM.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/19103iB4D9E1BCE51C6207/image-size/large?v=v2&amp;amp;px=999" role="button" title="Screenshot 2025-08-14 at 5.43.13 PM.png" alt="Screenshot 2025-08-14 at 5.43.13 PM.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Understanding Apache Iceberg and Catalogs&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;Apache Iceberg is an &lt;/SPAN&gt;&lt;STRONG&gt;open table format&lt;/STRONG&gt;&lt;SPAN&gt; for large-scale data lakes that supports ACID transactions, schema evolution, and branching. However, Iceberg requires a &lt;/SPAN&gt;&lt;STRONG&gt;catalog&lt;/STRONG&gt;&lt;SPAN&gt; to track table metadata, coordinate transactions, and enforce governance.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;A catalog is responsible for:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Discovery&lt;/STRONG&gt;&lt;SPAN&gt; – knowing where tables live and what metadata they reference.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Concurrency control&lt;/STRONG&gt;&lt;SPAN&gt; – managing atomic snapshot updates across engines.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Governance&lt;/STRONG&gt;&lt;SPAN&gt; – controlling permissions, lineage, and auditing.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Optimization hooks&lt;/STRONG&gt;&lt;SPAN&gt; – triggering compaction, clustering, and snapshot expiration.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;In a multi-engine architecture, &lt;/SPAN&gt;&lt;STRONG&gt;the choice of catalog becomes just as important as the table format itself&lt;/STRONG&gt;&lt;SPAN&gt;. The long-term vision for an open lakehouse is to &lt;/SPAN&gt;&lt;STRONG&gt;decouple compute from storage&lt;/STRONG&gt;&lt;SPAN&gt; so you can choose the best engine for the workload—while letting the catalog define governance, lifecycle, and optimization.&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Managed Tables (UC-owned):&lt;/STRONG&gt;&lt;SPAN&gt; Unity Catalog owns the table’s lifecycle — handling reads, writes, and automated maintenance such as Predictive Optimization.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Foreign Tables (Externally-owned):&lt;/STRONG&gt;&lt;SPAN&gt; An external catalog, such as Snowflake Horizon, manages the lifecycle. Unity Catalog provides secure, governed read access without taking ownership of the table.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;STRONG&gt;Choosing the Right Approach — Quick Reference&lt;/STRONG&gt;&lt;/H3&gt;
&lt;TABLE&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH&gt;
&lt;P&gt;&lt;STRONG&gt;Requirement&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TH&gt;
&lt;TH&gt;
&lt;P&gt;&lt;STRONG&gt;Pick&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Only &lt;/SPAN&gt;&lt;STRONG&gt;read&lt;/STRONG&gt;&lt;SPAN&gt; in Databricks; lifecycle owned elsewhere&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Foreign Iceberg (Catalog Federation)&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Full &lt;/SPAN&gt;&lt;STRONG&gt;read/write&lt;/STRONG&gt;&lt;SPAN&gt; from Databricks &lt;/SPAN&gt;&lt;STRONG&gt;and&lt;/STRONG&gt;&lt;SPAN&gt; other engines, with UC governance &amp;amp; automation&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;span class="lia-unicode-emoji" title=":white_heavy_check_mark:"&gt;✅&lt;/span&gt; Managed Iceberg + UC REST Catalog&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Need &lt;/SPAN&gt;&lt;STRONG&gt;automated maintenance&lt;/STRONG&gt;&lt;SPAN&gt; (optimize, expire snapshots)&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;span class="lia-unicode-emoji" title=":white_heavy_check_mark:"&gt;✅&lt;/span&gt; Managed Iceberg + Predictive Optimization&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Need to &lt;/SPAN&gt;&lt;STRONG&gt;evolve clustering strategy without rewrite&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;span class="lia-unicode-emoji" title=":white_heavy_check_mark:"&gt;✅&lt;/span&gt; Managed Iceberg + Liquid Clustering&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Two Approaches to Iceberg Interoperability in UC&lt;/STRONG&gt;&lt;/H2&gt;
&lt;H3&gt;&lt;STRONG&gt;1. Foreign Iceberg Tables (read-only from Databricks)&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;Foreign Iceberg tables are &lt;/SPAN&gt;&lt;STRONG&gt;owned and maintained by an external catalog &lt;/STRONG&gt;&lt;SPAN&gt;— for example, Snowflake Horizon or AWS Glue — but made visible in Unity Catalog. This approach is ideal when Databricks needs &lt;/SPAN&gt;&lt;STRONG&gt;read-only access&lt;/STRONG&gt;&lt;SPAN&gt; to tables whose lifecycle is managed elsewhere.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The most robust way to access foreign Iceberg is &lt;/SPAN&gt;&lt;STRONG&gt;Catalog Federation&lt;/STRONG&gt;&lt;SPAN&gt;, where UC connects directly to the external catalog and mirrors table metadata. Each query checks for the latest snapshot from the foreign catalog before execution, ensuring freshness without losing UC governance, lineage tracking, and audit visibility.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN&gt;Configuring Foreign Iceberg in UC&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;Step 1.&lt;/STRONG&gt;&lt;A href="https://docs.databricks.com/aws/en/connect/unity-catalog/cloud-storage/external-locations#-option-2-create-an-external-location-manually-using-catalog-explorer" target="_blank" rel="noopener"&gt; &lt;STRONG&gt;Create&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; External Location(s)&lt;/STRONG&gt;&lt;SPAN&gt; (authorized paths to the Iceberg data)&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Lets UC read the cloud storage referenced by the foreign catalog.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Step 2.&lt;/STRONG&gt;&lt;A href="https://docs.databricks.com/aws/en/query-federation/snowflake#create-a-connection" target="_blank" rel="noopener"&gt; &lt;STRONG&gt;Create&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; a Connection to the Foreign Catalog&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;E.g., Snowflake Horizon: connection must have &lt;/SPAN&gt;&lt;STRONG&gt;USAGE&lt;/STRONG&gt;&lt;SPAN&gt; on database, schema, external volume, and the Iceberg table(s) to resolve current metadata locations.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Step 3.&lt;/STRONG&gt;&lt;A href="https://docs.databricks.com/aws/en/query-federation/hms-federation-external#-create-the-foreign-catalog" target="_blank" rel="noopener"&gt; &lt;STRONG&gt;Create&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; a Federated Catalog in UC&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Point it at the connection + &lt;/SPAN&gt;&lt;STRONG&gt;authorize&lt;/STRONG&gt;&lt;SPAN&gt; it to the external locations from Step 1.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Every query checks for metadata freshness before proceeding.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI-CODE lang="php"&gt;SELECT * FROM federated_catalog.federated_schema.iceberg_table&lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;2. Managed Iceberg Tables (full interoperability, read/write)&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;Managed Iceberg tables are &lt;/SPAN&gt;&lt;STRONG&gt;created and governed by Unity Catalog&lt;/STRONG&gt;&lt;SPAN&gt;. UC is the system of record, and all engines — including Snowflake, Trino, Flink, or Spark — access the tables through the &lt;/SPAN&gt;&lt;STRONG&gt;UC Iceberg REST Catalog&lt;/STRONG&gt;&lt;SPAN&gt;. This setup supports &lt;/SPAN&gt;&lt;STRONG&gt;full read/write interoperability&lt;/STRONG&gt;&lt;SPAN&gt; while preserving UC’s centralized governance.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Managed Iceberg offers:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Single source of truth&lt;/STRONG&gt;&lt;SPAN&gt; for data and metadata.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Predictive Optimization&lt;/STRONG&gt;&lt;SPAN&gt; to automatically handle compaction, snapshot expiration, and other maintenance tasks.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Liquid Clustering&lt;/STRONG&gt;&lt;SPAN&gt; for evolving data layout strategies without rewriting historical data.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;&lt;SPAN&gt;Configuring Managed Iceberg in UC&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;Step 1. Create the table&lt;/STRONG&gt;&lt;/P&gt;
&lt;LI-CODE lang="php"&gt;CREATE OR REPLACE TABLE main.schema.iceberg_table (c1 INT)
USING iceberg;&lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN&gt;(or)&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;df.write.format("iceberg").saveAsTable("main.schema.iceberg_table")&lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN&gt;If you try to specify a &lt;/SPAN&gt;&lt;STRONG&gt;LOCATION&lt;/STRONG&gt;&lt;SPAN&gt; on a managed Iceberg table, Databricks will &lt;/SPAN&gt;&lt;STRONG&gt;error &lt;/STRONG&gt;&lt;SPAN&gt;— UC manages the storage.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 2 (Optional but recommended) Enable Liquid Clustering&lt;/STRONG&gt;&lt;/P&gt;
&lt;LI-CODE lang="php"&gt;ALTER TABLE main.schema.iceberg_table
CLUSTER BY (c1);&lt;/LI-CODE&gt;
&lt;P&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&lt;SPAN&gt; Currently, to make &lt;/SPAN&gt;&lt;SPAN&gt;CLUSTER BY&lt;/SPAN&gt;&lt;SPAN&gt; work on Iceberg tables in UC, you must first set the following table properties:&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="ruby"&gt;ALTER TABLE main.schema.iceberg_table
SET TBLPROPERTIES (
  'delta.enableDeletionVectors' = false,
  'delta.enableRowTracking' = false
);&lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN&gt;This extra step will &lt;/SPAN&gt;&lt;STRONG&gt;not&lt;/STRONG&gt;&lt;SPAN&gt; be required in the near future — &lt;/SPAN&gt;&lt;STRONG&gt;with Iceberg v3&lt;/STRONG&gt;&lt;SPAN&gt; you’ll be able to simply run &lt;/SPAN&gt;&lt;SPAN&gt;CLUSTER BY&lt;/SPAN&gt;&lt;SPAN&gt; without the table property configuration.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 3. Use standard DML&lt;/STRONG&gt;&lt;/P&gt;
&lt;LI-CODE lang="php"&gt;INSERT INTO main.schema.iceberg_table VALUES (11);&lt;/LI-CODE&gt;
&lt;P&gt;&lt;STRONG&gt;Step 4. Enable external data access (metastore level)&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;UC vends short-lived credentials so external engines can access the underlying storage.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-08-14 at 12.00.53 PM.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/19101i5FD1F5AD170883E1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Screenshot 2025-08-14 at 12.00.53 PM.png" alt="Screenshot 2025-08-14 at 12.00.53 PM.png" /&gt;&lt;/span&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 5. Grant &lt;/STRONG&gt;&lt;STRONG&gt;EXTERNAL USE SCHEMA&lt;/STRONG&gt;&lt;SPAN&gt; (it’s &lt;/SPAN&gt;&lt;STRONG&gt;not&lt;/STRONG&gt;&lt;SPAN&gt; in &lt;/SPAN&gt;&lt;SPAN&gt;ALL PRIVILEGES&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Grant at catalog or schema level to the service principal / user.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-08-14 at 11.59.06 AM.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/19102i4F2AE6530D0E437D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Screenshot 2025-08-14 at 11.59.06 AM.png" alt="Screenshot 2025-08-14 at 11.59.06 AM.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 6. Configure the Iceberg REST Catalog client&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Auth Option A — Service Principal&lt;/STRONG&gt;&lt;/P&gt;
&lt;LI-CODE lang="php"&gt;CREATE OR REPLACE CATALOG INTEGRATION unity_catalog
  CATALOG_SOURCE = ICEBERG_REST
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE = '&amp;lt;uc-schema name&amp;gt;'
  REST_CONFIG = (
    CATALOG_URI = 'https://&amp;lt;workspace-uri&amp;gt;/api/2.1/unity-catalog/iceberg-rest'
    WAREHOUSE = '&amp;lt;uc-catalog name&amp;gt;'
    ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
  )
  REST_AUTHENTICATION = (
    TYPE = OAUTH
    OAUTH_TOKEN_URI = 'https://&amp;lt;workspace-uri&amp;gt;/oidc/v1/token'
    OAUTH_CLIENT_ID = '&amp;lt;client-id&amp;gt;'
    OAUTH_CLIENT_SECRET = '&amp;lt;client-secret&amp;gt;'
    OAUTH_ALLOWED_SCOPES = ('all-apis')
  )
  ENABLED = TRUE;&lt;/LI-CODE&gt;
&lt;P&gt;&lt;STRONG&gt;Auth Option B — Personal Access Token&lt;/STRONG&gt;&lt;/P&gt;
&lt;LI-CODE lang="php"&gt;CREATE OR REPLACE CATALOG INTEGRATION unity_catalog
  CATALOG_SOURCE = ICEBERG_REST
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE = '&amp;lt;uc-schema-name&amp;gt;'
  REST_CONFIG = (
    CATALOG_URI = 'https://&amp;lt;workspace-uri&amp;gt;/api/2.1/unity-catalog/iceberg-rest'
    WAREHOUSE = '&amp;lt;uc-catalog-name&amp;gt;'
    ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
  )
  REST_AUTHENTICATION = (
    TYPE = BEARER
    BEARER_TOKEN = '&amp;lt;personal access token&amp;gt;'
  )
  ENABLED = TRUE;&lt;/LI-CODE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;span class="lia-unicode-emoji" title=":information:"&gt;ℹ️&lt;/span&gt; Additional note for Snowflake writes&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Vended credentials&lt;/STRONG&gt;&lt;SPAN&gt; currently &lt;/SPAN&gt;&lt;STRONG&gt;work for reads only&lt;/STRONG&gt;&lt;SPAN&gt; from Snowflake into UC-managed Iceberg.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;To &lt;/SPAN&gt;&lt;STRONG&gt;write&lt;/STRONG&gt;&lt;SPAN&gt; to a UC-managed Iceberg table from Snowflake:&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;OL&gt;
&lt;LI style="font-weight: 400;" aria-level="2"&gt;&lt;SPAN&gt;Create an &lt;/SPAN&gt;&lt;STRONG&gt;external location&lt;/STRONG&gt;&lt;SPAN&gt; on the Snowflake side pointing to the UC table’s underlying storage.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="2"&gt;&lt;SPAN&gt;Create the &lt;/SPAN&gt;&lt;STRONG&gt;catalog integration&lt;/STRONG&gt;&lt;SPAN&gt; in Snowflake the same way as for reads, &lt;/SPAN&gt;&lt;STRONG&gt;but omit&lt;/STRONG&gt; &lt;SPAN&gt;ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="2"&gt;&lt;SPAN&gt;When creating the Iceberg table in Snowflake, &lt;/SPAN&gt;&lt;STRONG&gt;explicitly specify the external location&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/UL&gt;
&lt;H2&gt;&lt;STRONG&gt;Common Pitfalls to Avoid&lt;/STRONG&gt;&lt;/H2&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Missing authorized paths&lt;/STRONG&gt;&lt;SPAN&gt; in federated catalogs will cause queries to fall back to query federation, potentially incurring double compute costs.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Forgetting &lt;/STRONG&gt;&lt;STRONG&gt;EXTERNAL USE SCHEMA&lt;/STRONG&gt;&lt;SPAN&gt; when granting external engines access will block reads/writes. It’s &lt;/SPAN&gt;&lt;STRONG&gt;not&lt;/STRONG&gt;&lt;SPAN&gt; implied by &lt;/SPAN&gt;&lt;SPAN&gt;ALL PRIVILEGES&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Not setting a root storage location&lt;/STRONG&gt;&lt;SPAN&gt; for a federated catalog in UC; this is required to persist UC’s metadata about the foreign catalog. This is &lt;/SPAN&gt;&lt;STRONG&gt;separate from authorized paths&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Version requirements&lt;/STRONG&gt;&lt;SPAN&gt;: DBR 16.4 LTS+ for reads and writes.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Not enabling Predictive Optimization&lt;/STRONG&gt;&lt;SPAN&gt; can lead to performance degradation over time.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;Apache Iceberg’s open, engine-agnostic design enables true cross-platform interoperability—but &lt;/SPAN&gt;&lt;STRONG&gt;only if paired with the right catalog&lt;/STRONG&gt;&lt;SPAN&gt; strategy. By deciding early whether a dataset should be treated as &lt;/SPAN&gt;&lt;STRONG&gt;Foreign Iceberg&lt;/STRONG&gt;&lt;SPAN&gt; or &lt;/SPAN&gt;&lt;STRONG&gt;Managed Iceberg&lt;/STRONG&gt;&lt;SPAN&gt;, and by following best practices for federation, REST Catalog integration, and governance, you can build a lakehouse architecture that supports multiple engines without sacrificing performance, security, or maintainability.&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Wed, 12 Nov 2025 16:54:15 GMT</pubDate>
    <dc:creator>MohanaBasak</dc:creator>
    <dc:date>2025-11-12T16:54:15Z</dc:date>
    <item>
      <title>How to Set Up Databricks – Snowflake Interoperability With Unity Catalog and Iceberg</title>
      <link>https://community.databricks.com/t5/technical-blog/how-to-set-up-databricks-snowflake-interoperability-with-unity/ba-p/128406</link>
      <description>&lt;P&gt;Unlock seamless interoperability between Databricks Unity Catalog and external Iceberg ecosystems like Snowflake Horizon — without data copies. Learn when to use Managed vs. Foreign Iceberg, how to enable read/write access across platforms, and the pitfalls to avoid.&lt;/P&gt;</description>
      <pubDate>Wed, 12 Nov 2025 16:54:15 GMT</pubDate>
      <guid>https://community.databricks.com/t5/technical-blog/how-to-set-up-databricks-snowflake-interoperability-with-unity/ba-p/128406</guid>
      <dc:creator>MohanaBasak</dc:creator>
      <dc:date>2025-11-12T16:54:15Z</dc:date>
    </item>
  </channel>
</rss>

