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

Windows环境下PySpark读取文本文件触发AnalysisException:路径自动添加file:/前缀的原因及解决方法

PySpark读取Windows本地文件时AnalysisException问题解析及解决办法

最近在Windows上用PySpark读取文本文件时碰到了AnalysisException,错误提示路径不存在还自动带上了file:/前缀?我来帮你拆解下问题原因和解决办法。

问题重现

报错信息如下:

Error: AnalysisException: Path does not exist: file:/D:/sk - Add/Main/2020/Main_2012-01.txt

对应的三个代码场景:

Code1(执行报错)

for i in os.listdir():
    if j.endswith('.txt'):
        print(i)
df= spark.read.text(i)

Code2(同样报错)

path=r"D:\sk - Add\Main\2020"
for i in os.listdir():
    if j.endswith('.txt'):
        print(i)
df= spark.read.text(path+'\\'+i)

Code3(无报错)

df1=spark.read.text(r'D:\sk - Add\Main\2020\Main_2020-12.txt')

为什么前两种场景会报错?

其实不是PySpark"自动添加"了file:/前缀,而是路径解析规则的问题:

  1. Code1的核心问题
    os.listdir()不带参数时,读取的是当前工作目录的文件列表,返回的只是文件名(比如Main_2012-01.txt),不是完整路径。当你把这个文件名传给spark.read.text()时,PySpark会把它当作相对路径,自动拼接Spark默认文件系统的前缀(也就是file:/),但这个相对路径在Spark的文件系统视角下找不到对应文件,自然报错。

  2. Code2的双重错误

    • 首先是变量名写错了:循环里用了未定义的j,应该是i.endswith('.txt');
    • 其次,os.listdir()默认读的是当前工作目录的文件,而你指定的path是另一个目录,所以i大概率不是path下的文件,拼接出来的路径本身就不存在,PySpark解析后同样会带上file:/前缀并报错。
  3. Code3能正常运行的原因
    你用了**原始字符串(r前缀)**传入了完整的绝对路径,PySpark能直接识别这个Windows本地绝对路径,不需要拼接默认前缀,自然能找到文件。

解决办法

关键是要确保传给spark.read.text()的是完整的绝对路径,同时修正代码中的错误:

方案1:正确遍历目标目录生成完整路径

import os

target_path = r"D:\sk - Add\Main\2020"
# 遍历目标目录下的所有文件
for filename in os.listdir(target_path):
    if filename.endswith('.txt'):
        print(filename)
        # 用os.path.join自动拼接路径,适配Windows分隔符
        full_file_path = os.path.join(target_path, filename)
        df = spark.read.text(full_file_path)
        # 这里可以加上对df的处理逻辑...

方案2:直接读取目录下所有txt文件(更高效)

如果目标目录下的所有txt文件都需要读取,没必要逐个遍历,直接让PySpark读取整个目录的匹配文件:

target_path = r"D:\sk - Add\Main\2020"
# 读取目录下所有txt文件
df = spark.read.text(os.path.join(target_path, "*.txt"))

这种方式更简洁,还能避免循环中的路径拼接错误。

额外小贴士

  • 确保运行PySpark的用户对目标目录有读取权限;
  • 路径中的空格不需要额外转义,用原始字符串(r前缀)或者双引号包裹即可;
  • 碰到路径问题时,先打印出拼接后的完整路径,确认路径正确再传给Spark,能快速排查问题。

内容的提问来源于stack exchange,提问作者sachin kumar s

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 09:22:41