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

Azure Databricks使用spark-xml加载XML文件失败求助

Azure Databricks中使用PySpark加载XML文件报错:fs.azure.account.key配置无效

环境信息

  • Azure Databricks 14.3 LTS(内置Apache Spark 3.5.0、Scala 2.12)

失败代码片段

# 加载指定XML文件
single_file_df = (
    spark.read.format("com.databricks.spark.xml")
    .option("rowTag", "Tag").load(specific_file_path)
)

# # 展示数据样本
single_file_df.show(truncate=False)

报错信息

Py4JJavaError: An error occurred while calling o457.load.
: Failure to initialize configuration for storage account [REDACTED].dfs.core.windows.net: Invalid configuration value detected for fs.azure.account.keyInvalid configuration value detected for fs.azure.account.key

File ,
line 4

1 # 加载指定XML文件
2 single_file_df = (
3 spark.read.format("com.databricks.spark.xml")
----> 4 .option("rowTag", "Tag").load(specific_file_path)
5 )
7 # # 展示数据样本
8 single_file_df.show(truncate=False)

已完成的排查步骤

  • 连接验证:可正常列出容器内容,且通过以下代码成功读取文件原始文本:
    simple_df = spark.read.text(specific_file_path)
    simple_df.show(truncate=False)
    
  • 集群已安装最新版XML处理库:com.databricks:spark-xml_2.12:0.15.0
  • 拥有目标存储Blob的全部权限:Storage Blob Data Owner、Storage Blob Data Contributor、Storage Blob Data Reader
  • 查阅相关存储文档未找到有效解决方案

需求

希望仅使用PySpark实现XML文件加载,不使用存储挂载或Blob SDK连接方式,求其他可行解决办法。

完整代码

# 定义Azure Key Vault作用域
scope = 'your_scope_here'

# 从Key Vault安全获取存储账户名称和访问密钥
dl_storage_account = dbutils.secrets.get(scope=scope, key="dl_storage_account_name_key")
dl_storage_account_access_key = dbutils.secrets.get(scope=scope, key="dl_storage_account_access_key_key")
blob_storage_account = dbutils.secrets.get(scope=scope, key="blob_storage_account_name_key")
blob_storage_account_access_key = dbutils.secrets.get(scope=scope, key="blob_storage_account_access_key_key")

# 设置Spark访问Azure存储的配置
spark.conf.set(f"fs.azure.account.key.{blob_storage_account}.blob.core.windows.net", blob_storage_account_access_key)
spark.conf.set(f"fs.azure.account.key.{dl_storage_account}.dfs.core.windows.net", dl_storage_account_access_key)

# 定义Azure Data Lake输入路径(已脱敏)
input_path = f"abfss://container-name@{dl_storage_account}.dfs.core.windows.net/path/to/directory/"

from pyspark.sql import SparkSession
from pyspark.sql.functions import schema_of_xml, expr, col, current_timestamp,lit,explode_outer, input_file_name, regexp_extract,concat_ws
from pyspark.sql.types import NullType

# 定义目标XML文件的具体路径(已脱敏)
specific_file_path = f"abfss://container-name@{dl_storage_account}.dfs.core.windows.net/path/to/directory/file-name.xml"

# 加载指定XML文件
single_file_df = (
    spark.read.format("com.databricks.spark.xml")
    .option("rowTag", "Tag").load(specific_file_path)
)

# # 展示数据样本
single_file_df.show(truncate=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 01:05:17