如何在Databricks高级工作区用DuckDB连接Fabric湖仓与数据湖?
DuckDB连接Fabric湖仓错误分析与解决方案
错误核心原因
- 未提供有效身份凭据:DuckDB访问OneLake必须通过SPN或存储访问密钥做身份验证,无合法凭据会触发权限校验失败,同时可能引发连带的SSL证书验证异常。
- SSL CA证书问题:DuckDB无法读取系统默认的SSL根证书(路径错误或权限不足),导致无法建立与OneLake的安全HTTPS连接。
正确连接与访问步骤
方式一:使用服务主体(SPN)
- 提前获取SPN的租户ID、客户端ID、客户端密钥(Azure AD中创建并授权访问Fabric湖仓)
- 在DuckDB中配置凭据并查询:
-- 配置SPN身份信息 SET azure_tenant_id = '你的租户ID'; SET azure_client_id = '你的SPN客户端ID'; SET azure_client_secret = '你的SPN客户端密钥'; -- 可选:指定SSL证书路径(解决证书读取问题) SET ssl_ca = '/etc/ssl/certs/ca-certificates.crt'; -- Linux环境示例,Windows可对应系统证书路径 -- 读取OneLake中的CSV文件 SELECT * FROM read_csv('abfss://demo@onelake.dfs.fabric.microsoft.com/Lakehouse.Lakehouse/Files/20180402040501.CSV');
方式二:使用存储访问密钥
- 在Fabric湖仓的「设置」-「存储访问密钥」中获取访问密钥
- 配置DuckDB并查询:
-- 配置存储访问密钥 SET azure_storage_account_key = '你的存储访问密钥'; -- 可选:指定SSL证书路径 SET ssl_ca = '/etc/ssl/certs/ca-certificates.crt'; -- 读取目标CSV文件 SELECT * FROM read_csv('abfss://demo@onelake.dfs.fabric.microsoft.com/Lakehouse.Lakehouse/Files/20180402040501.CSV');
SSL证书问题补充处理
如果仍存在SSL证书错误:
- Linux环境:直接使用系统默认证书路径
/etc/ssl/certs/ca-certificates.crt,确保DuckDB进程有读取权限 - Windows环境:指定
C:\Windows\System32\certificates\root\ca-bundle.pem,或通过openssl导出系统根证书 - Databricks环境:使用集群自带的SSL证书路径,或上传自定义证书到DBFS后指定路径(如
dbfs:/path/to/ca-cert.pem)
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

