Synapse Spark中使用挂载路径读取ADLS Gen2文件报错的解决咨询
在Synapse Spark中通过挂载路径读取ADLS Gen2文件的解决办法
问题原因
Synapse中workspace范围的ADLS Gen2挂载,Python的os模块可以直接访问挂载的本地路径,但Spark的文件系统抽象默认会将本地路径解析为ADLS的abfss路径,导致报错。
解决方法
强制使用本地文件系统路径
在挂载路径前添加file://前缀,让Spark跳过ADLS路径解析,直接访问集群挂载的文件系统:df = spark.read.format('csv').load('file:///path/to/file')注意这里是三个斜杠:
file://协议前缀后紧跟绝对挂载路径。全局配置Spark默认文件系统(可选)
如果希望所有Spark操作都默认使用本地挂载路径,可以在会话中设置fs.defaultFS参数:spark.conf.set("fs.defaultFS", "file:///")配置后直接使用挂载路径即可读取:
df = spark.read.format('csv').load('/path/to/file')此设置会影响所有Spark文件操作,需根据业务场景确认是否适用。
验证路径有效性
用Spark的文件系统工具确认路径可访问:dbutils.fs.ls('file:///path/to/file/directory')若能正常列出文件,说明路径配置无误。
注意事项
- 使用
file://路径时,确保挂载路径在所有Spark集群节点上都可见,因为Spark是分布式执行框架,每个executor都需要能访问目标文件。 - 确认ADLS文件的权限设置正确,避免出现权限不足导致的读取失败。
内容的提问来源于stack exchange,提问作者Carlos Garcia-Vaso
相关产品推荐
相关产品推荐

