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

Spark集群模式spark-submit报Pyspark File Not Found Exception本地运行正常

解决Spark集群模式下PySpark File Not Found Exception问题

我来帮你排查这个棘手的问题——本地能正常运行但集群模式报错,还排除了权限和Pi示例的问题,咱们从集群模式的核心特性入手分析:

核心原因:集群模式下文件的访问逻辑和本地完全不同

本地模式下,Driver和Executor都在你的机器上,文件路径直接指向本地文件系统;但集群模式下,Driver可能在任意Worker节点启动,所有Worker节点都需要能访问到你的脚本/依赖文件,而Pi.py是Spark自带的示例,集群节点默认就有,所以不受影响。

下面是针对性的解决方案:

1. 确保文件在集群所有节点可访问

  • 方案A:上传到分布式文件系统(如HDFS)
    把你的脚本和依赖文件上传到HDFS,然后用HDFS路径提交:
    spark-submit hdfs:///user/your_username/your_script.py
    
  • 方案B:用--files参数分发文件
    提交时通过--files把本地文件发送到所有Worker节点的临时目录,代码里用SparkFiles.get()获取路径:
    提交命令:
    spark-submit --files /local/path/your_script.py your_main_script.py
    
    代码中引用:
    from pyspark import SparkFiles
    file_path = SparkFiles.get("your_script.py")
    

2. 重新验证权限问题

你给本地文件夹加了chmod -R 777,但要注意:

  • 集群Worker节点的用户(通常是spark用户)是否能访问你提交机器的本地文件?跨节点的本地文件系统默认是隔离的,权限设置再高也没用。
  • 登录到任意Worker节点,手动检查你指定的文件路径是否存在,或者尝试读取该文件,确认权限是否真的在集群节点生效。

3. 检查Spark Submit参数配置

  • 如果你的代码依赖多个Python模块,用--py-files打包成zip文件提交,确保所有依赖都能被Worker节点加载:
    spark-submit --py-files your_modules.zip your_main_script.py
    
  • 集群模式下避免使用相对路径,尽量用绝对的分布式路径或通过SparkFiles获取路径。

4. 确认Driver节点的文件访问

集群模式下Driver不在你提交命令的本地机器,而是在集群内的节点启动。如果代码里硬编码了本地路径(比如/home/user/xxx.txt),Driver所在节点没有这个文件就会报错,一定要换成分布式存储路径或分发后的路径。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:33:48