如何为SQL版Delta Live Tables配置Azure Data Lake访问授权?
解决方案
针对SQL版Delta Live Tables笔记本无法添加Python配置单元格的问题,有两种可行的方式配置Azure Data Lake访问权限:
1. 在DLT管道的Spark配置中直接引用密钥
DLT管道支持直接通过{{secrets/密钥范围/密钥名称}}语法引用Databricks密钥,无需依赖dbutils.secrets.get。具体操作如下:
- 打开DLT管道的配置页面,找到Spark configuration区域
- 将原Python代码中的Spark配置项逐行填入,把
service_credential替换为密钥引用语法,最终配置内容如下:
fs.azure.account.auth.type.mylake.dfs.core.windows.net OAuth fs.azure.account.oauth.provider.type.mylake.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider fs.azure.account.oauth2.client.id.mylake.dfs.core.windows.net 99999999-9999-9999-9999-999999999 fs.azure.account.oauth2.client.secret.mylake.dfs.core.windows.net {{secrets/myscope/mykey}} fs.azure.account.oauth2.client.endpoint.mylake.dfs.core.windows.net https://login.microsoftonline.com/99999999-9999-9999-9999-9999999999/oauth2/token
- 保存管道配置后重新运行,DLT会自动解析密钥引用并完成认证
2. 使用Databricks外部位置(External Location)统一管理存储访问
这种方式更适合多管道复用存储配置,权限管理更集中:
- 在Databricks控制台创建外部位置:
- 指定存储账户路径(如
abfss://container@mylake.dfs.core.windows.net/DataLakeSource/MyTableFiles) - 认证方式选择OAuth,填入Client ID、Client Secret(用
{{secrets/myscope/mykey}}引用)、Token Endpoint - 授予DLT管道对应的服务主体访问该外部位置的权限
- 指定存储账户路径(如
- 在SQL笔记本中直接使用外部位置:
CREATE OR REFRESH STREAMING LIVE TABLE MyTable AS SELECT * FROM cloud_files("my_external_location", "parquet", map("cloudFiles.inferColumnTypes", "true"))
注意事项
- 确保DLT管道的运行身份(服务主体)拥有访问密钥范围的权限,以及Azure Data Lake存储账户的Blob数据 Contributor(或对应读写权限)
- 两种方式都不需要在SQL笔记本中添加任何配置代码,完全符合SQL版DLT的使用限制
内容的提问来源于stack exchange,提问作者FAA
相关产品推荐
相关产品推荐

