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

Windows环境下PySpark执行collect()时意外终止问题求助

根本解决方案

针对Windows Server 2022环境下PySpark 4.0.1搭配Python 3.12出现的Python worker exited unexpectedly错误,以下是几个根本修复方向:

1. 修正Python路径的环境变量配置

  • 同时设置PYSPARK_DRIVER_PYTHON环境变量,值与PYSPARK_PYTHON一致:
    PYSPARK_DRIVER_PYTHON=C:\Program Files\Python312\python.exe
    
  • 若路径包含空格,改用Windows短路径格式(通过dir /x命令查看对应短路径),例如将C:\Program Files\Python312替换为C:\PROGRA~1\Python312,避免Java进程解析带空格路径时出错:
    PYSPARK_PYTHON=C:\PROGRA~1\Python312\python.exe
    PYSPARK_DRIVER_PYTHON=C:\PROGRA~1\Python312\python.exe
    
  • 修改后重启命令行或系统,确保环境变量生效。

2. 升级PySpark至兼容Python 3.12的版本

Spark 4.0.1对Python 3.12的Windows平台支持存在兼容性问题,建议升级到Spark 4.0.2及以上版本(官方已在后续版本修复了Python 3.12的适配问题)。下载对应Hadoop版本的Spark包,更新SPARK_HOME环境变量并替换PATH中的Spark路径。

3. 确保Hadoop Windows依赖文件完整且匹配

  • 确认HADOOP_HOME\bin目录下存在对应Hadoop 3.x版本的winutils.exe和hadoop.dll(需64位版本,适配Windows Server 2022)。
  • 若文件缺失或版本不匹配,下载对应版本的Hadoop Windows二进制包替换现有文件,避免因依赖缺失导致路径解析错误。

4. 手动修复PySpark Worker启动脚本

若上述方案无效,可修改PySpark的worker启动逻辑:

  1. 打开SPARK_HOME\python\pyspark\daemon.py文件
  2. 找到启动Python进程的subprocess.Popen相关代码段
  3. 将python_exec参数用双引号包裹,确保带空格的路径被正确解析:
    # 修改前
    proc = subprocess.Popen([python_exec] + args, ...)
    # 修改后
    proc = subprocess.Popen([f'"{python_exec}"'] + args, shell=True, ...)
    
    注意添加shell=True参数,确保命令行正确解析带引号的路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 07:53:19