You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Databricks中无需账户密钥读取Excel文件?

问题描述

我在Databricks中安装了com.crealytics:spark-excel_2.12:0.13.5包,编写了如下Spark代码读取Excel文件:

df = spark.read.format("com.crealytics.spark.excel")\
.option("header", "false") \
.option("inferSchema", "true") \
.option("dataAddress", "Version") \
.load('abfss://abc.xlsx')

同时在集群配置中设置了服务主体相关参数:

fs.azure.account.oauth2.client.secret {{secrets/xx}}
fs.azure.account.auth.type OAuth
spark.databricks.delta.preview.enabled true
fs.azure.account.oauth2.client.endpoint https://login.microsoftonline.com/0x/oauth2/token
fs.azure.account.oauth.provider.type org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
fs.azure.account.oauth2.client

运行时出现错误:

Failure to initialize configurationInvalid configuration value detected for fs.azure.account.key

请问如何无需账户密钥访问该Excel数据?

解决方案

1. 补全并修正服务主体认证配置

当前集群配置存在参数缺失和无效项,导致认证逻辑混乱,系统仍尝试调用账户密钥。完整的服务主体OAuth认证配置应包含以下参数:

fs.azure.account.auth.type OAuth
fs.azure.account.oauth.provider.type org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
fs.azure.account.oauth2.client.id <你的服务主体ID>
fs.azure.account.oauth2.client.secret {{secrets/xx}}
fs.azure.account.oauth2.client.endpoint https://login.microsoftonline.com/<你的租户ID>/oauth2/token
  • 替换<你的服务主体ID>为实际的服务主体应用ID;
  • 替换<你的租户ID>为Azure租户ID(即当前endpoint中0x对应的真实值);
  • 删除原配置中无效的fs.azure.account.oauth2.client行。

2. 确保服务主体拥有数据访问权限

服务主体必须被授予目标ADLS Gen2容器的Storage Blob Data Reader(或更高权限)角色,否则即使配置正确也无法读取数据。

3. 修正Excel文件路径格式

abfss://abc.xlsx路径不完整,正确的ADLS Gen2路径格式为:

abfss://<容器名>@<存储账户名>.dfs.core.windows.net/abc.xlsx

路径缺失容器和存储账户信息会导致认证逻辑异常。

4. 移除冲突的账户密钥配置

检查集群或Workspace级别的Hadoop配置,若存在fs.azure.account.key.<存储账户名>.dfs.core.windows.net这类参数,需立即移除——这类配置会与OAuth认证冲突,强制系统尝试使用账户密钥访问数据。

内容的提问来源于stack exchange,提问作者user3579222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:31:37