通过SSMS连接Azure Synapse查询Databricks生成的Delta表是否可行
Azure Synapse查询Blob存储Delta表问题解答
核心结论
可以通过SSMS或Azure Data Studio连接Azure Synapse查询Blob存储中由Databricks生成的Delta格式表,你遇到的报错是连接的SQL池类型不匹配导致的。
报错原因
你当前执行SQL的连接对象是Synapse专用SQL池,该类型SQL池原生不支持直接使用OPENROWSET指定FORMAT = 'DELTA'的查询语法,因此会抛出语法解析错误。
可行实现方案
- 方案一:切换连接到Synapse无服务器SQL池(Serverless SQL Pool)
无服务器SQL池原生支持Delta格式的直接查询,你编写的原始查询语法在无服务器SQL池环境下可以直接运行,仅需提前配置存储访问权限:- 给当前登录使用的AAD账号分配存储账户的「存储Blob数据读取者」角色权限
- 也可在
OPENROWSET参数中追加CREDENTIAL配置,指定SAS密钥或托管身份凭据完成访问
适配你的场景可直接运行如下SQL:
SELECT TOP(10) * FROM OPENROWSET( BULK 'https://blob_container_storage.blob.core.windows.net/delta-lake/test/', FORMAT = 'DELTA' ) as rows - 方案二:必须使用专用SQL池的处理方式
专用SQL池无法直接识别Delta格式的事务日志,你可以选择两种方式实现访问:- 通过Synapse管道或者Databricks任务,将Delta表数据同步到专用SQL池的内置表后查询
- 创建专用SQL池外部表,直接映射Delta表存储路径下的Parquet数据文件,通过Parquet格式兼容读取数据
内容的提问来源于stack exchange,提问作者MADFROST
相关产品推荐
相关产品推荐

