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

Spark递归读取ADLS JSON文件时抛出URISyntaxException异常排查

解决Spark读取ADLS递归JSON文件时的URISyntaxException异常

可能的原因

  • ADLS挂载路径下的部分文件夹/文件名包含特殊字符(如空格、%、&、中文等),导致URI解析失败
  • Spark的recursiveFileLookup与pathGlobFilter组合在ADLS挂载路径下存在兼容性问题
  • DBFS挂载ADLS的路径配置存在潜在的URI解析冲突

解决办法

1. 排查并清理特殊字符

检查ADLS中A目录下所有子文件夹及JSON文件的名称,确保没有空格、中文、%、#这类特殊字符。ADLS对路径字符的要求比S3更严格,特殊字符会触发URI语法错误。

2. 替换路径写法,使用ADLS原生URI

放弃DBFS挂载路径,直接使用ADLS Gen2的原生abfss协议路径,例如:

sourceFilepath = 'abfss://your-container@your-storage-account.dfs.core.windows.net/A'

这种方式绕开DBFS挂载的URI解析环节,直接与ADLS交互,避免挂载带来的路径问题。

3. 调整Spark读取参数组合

改用通配符递归匹配文件,替代recursiveFileLookup和pathGlobFilter:

def json_parquet(sourceFilePath):
  df=(spark.read.format("json")
      .option("multiline",True)
      .load(sourceFilePath))

# 用**递归匹配所有子目录下的json文件
sourceFilepath='dbfs:/mnt/pp-working-1/A/**/*.json'
json_parquet(sourceFilepath) 

这种写法更直接,避免两个参数组合在ADLS上的兼容性问题。

4. 检查ADLS挂载配置

确认DBFS挂载ADLS的命令是否正确,比如挂载时是否使用了正确的绝对路径,没有引入相对路径错误。例如挂载命令应该类似:

dbutils.fs.mount(
  source = "abfss://container@storageaccount.dfs.core.windows.net/",
  mount_point = "/mnt/pp-working-1",
  extra_configs = {"fs.azure.account.key.storageaccount.dfs.core.windows.net": "your-access-key"}
)

确保挂载源是ADLS的根路径,挂载点是绝对路径,没有语法错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:30:49