Azure Databricks写ADLS Gen2 Delta表报fs.azure.account.key错误如何解决
问题根因
你遇到的报错核心是Spark配置项与认证方式不匹配:你使用存储账户访问密钥访问ADLS Gen2,但错误配置了OAuth2客户端专用的参数,Spark无法找到合法的fs.azure.account.key配置项完成认证。
Failure to initialize configurationInvalid configuration value detected for fs.azure.account.key
解决方案
你可以根据实际使用的认证方式二选一:
方案1:继续使用存储账户访问密钥认证
直接替换你原有代码中的Spark配置段即可,其余读写逻辑无需修改:
// 注意:如果后续读写代码是Python语法,把开头的%scala替换为%python %scala spark.conf.set( "fs.azure.account.key.tempaccount.dfs.core.windows.net", "<替换为你的存储账户访问密钥>" )
方案2:使用服务主体(OAuth2)认证
如果你需要用OAuth2方式认证,需要补全所有必填的配置项,注意此场景下填写的不是存储账户访问密钥,是服务主体的客户端密钥:
// 注意:如果后续读写代码是Python语法,把开头的%scala替换为%python %scala spark.conf.set("fs.azure.account.auth.type.tempaccount.dfs.core.windows.net", "OAuth") spark.conf.set("fs.azure.account.oauth.provider.type.tempaccount.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider") spark.conf.set("fs.azure.account.oauth2.client.id.tempaccount.dfs.core.windows.net", "<替换为你的服务主体应用ID>") spark.conf.set("fs.azure.account.oauth2.client.secret.tempaccount.dfs.core.windows.net", "<替换为你的服务主体客户端密钥>") spark.conf.set("fs.azure.account.oauth2.client.endpoint.tempaccount.dfs.core.windows.net", "https://login.microsoftonline.com/<替换为你的Azure租户ID>/oauth2/token")
注意事项
- 生产环境禁止明文写密钥,建议通过Azure Databricks机密作用域存储敏感信息,用
dbutils.secrets.get()方法调取。 - 确保你使用的认证身份拥有目标ADLS Gen2容器的读写权限。
- 你当前代码开头的
%scala与后续Python语法的读写代码不匹配,若用Python开发请替换为%python,避免语法解析报错。
内容的提问来源于stack exchange,提问作者Nabia Salman
相关产品推荐
相关产品推荐

