cancel
Showing results forย 
Search instead forย 
Did you mean:ย 
Data Engineering
Join discussions on data engineering best practices, architectures, and optimization strategies within the Databricks Community. Exchange insights and solutions with fellow data engineers.
cancel
Showing results forย 
Search instead forย 
Did you mean:ย 

Is anyone getting up and working ? Federating Snowflake-managed Iceberg tables into Azure Databricks

Not applicable

I'm federating Snowflake-managed Iceberg tables into Azure Databricks Unity Catalog to query the same data from both platforms without copying it. I am getting weird error message when query table from Databricks and i have tried to put all nicely in place and i can see that Databricks says: Data source Iceberg which is already good. Snowflake and Databricks on Azure both.

Error getting sample data Your request failed with status FAILED: [BAD_REQUEST] [DELTA_UNIFORM_INGRESS_VIOLATION.CONVERT_TO_DELTA_METADATA_FAILED] Read Delta Uniform fails: Metadata conversion from Iceberg to Delta failed, Failure to initialize configuration for storage account XXXX.blob.core.windows.net: Invalid configuration value detected for fs.azure.account.key.
I was so close already when thining it all works and noticed in one point that actually Snowflake compute was used, so databricks was not reading directly Azure stored iceberg files. So i added storage location, auth paths etc. and then i started to get this error message and I am pretty sure no account key is needed, even databricks has access and can see the file, list those etc. something is happening on config that i can not understand why this does not work. Basically i have current setup like this :
  • Snowflake (Iceberg table owner + catalog)

  • Azure object storage (stores Iceberg data + metadata)

  • Databricks Unity Catalog (federates Snowflake catalog + enforces governance)

  • Databricks compute (Serverless SQL / SQL Warehouse querying the data)

 

3 REPLIES 3

Hubert-Dudek
Databricks MVP

try this:

  1. In Snowflake, run SELECT SYSTEM$GET_ICEBERG_TABLE_INFORMATION('<db>.<schema>.<table>'); to retrieve metadata location.
  2. In Databricks, create an external location that matches the metadata URI.

My blog: https://databrickster.medium.com/

Check also the behavior on both serverless and classic compute - it is catalog federation so it can work like that and needs setup as you read only metadata from catalog and later databricks is just reading data from that metadata location


My blog: https://databrickster.medium.com/

on classic compute  you can set access to blob by sparkconf:
spark.conf.set(f"fs.azure.account.key.{account_name}.blob.core.windows.net", account_key)


My blog: https://databrickster.medium.com/