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

PySpark执行df.show()遇Py4JJavaError,Python Worker崩溃求助

PySpark Python Worker 意外崩溃问题求助

我运行以下代码尝试展示DataFrame:

import os
import sys

from pyspark.sql import *
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession

os.environ['PYSPARK_PYTHON']=sys.executable
os.environ['PYSPARK_DRIVER_PYTHON']=sys.executable

spark=SparkSession.builder\
      .appName("Hello Spark")\
      .master("local[2]")\
      .getOrCreate()
  
def spark_practice():
  
  date_list = [("Ravi",28),
               ("David",45),
               ("Mani",27)]
  
  df=spark.createDataFrame(date_list).toDF("Name","Age")
  df.printSchema()
  df.show()

spark_practice()

出现如下错误:

File "C:\Program Files\Hadoop\spark-3.5.1\python\lib\py4j-0.10.9.7-src.zip\py4j\protocol.py", line 326, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o46.showString.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 1 times, most recent failure: Lost task 0.0 in stage 0.0 (TID 0) (Prince-PC executor driver): org.apache.spark.SparkException: Python worker exited unexpectedly (crashed)

我已尝试将环境变量PYSPARK_DRIVER_PYTHON设置为项目使用的最新Python版本,但问题仍未解决,特此求助。


可行解决方法

1. 确认Python版本兼容性

Spark 3.5.1要求Python版本在3.8-3.11区间内,运行python --version检查当前版本,若超出范围,切换到兼容版本。

2. 显式指定Python解释器完整路径

避免依赖sys.executable,直接写死Python路径(注意用正斜杠或双反斜杠):

os.environ['PYSPARK_PYTHON'] = 'C:/your/python/path/python.exe'
os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/your/python/path/python.exe'

3. 排查依赖冲突

  • 检查是否安装了与Spark冲突的库,比如老旧版本的pyarrow,Spark 3.5.1推荐使用pyarrow 12.0.0及以上版本。
  • 创建干净的虚拟环境,仅安装pyspark和必要依赖后重新测试。

4. 开启worker日志排查崩溃细节

在代码开头添加日志配置,获取更详细的错误信息:

os.environ['PYSPARK_LOG_LEVEL'] = 'DEBUG'
os.environ['PYSPARK_WORKER_LOG_LEVEL'] = 'DEBUG'

运行后查看Spark安装目录下logs文件夹中的worker日志,定位崩溃具体原因。

5. 调整local模式核数

将master("local[2]")改为master("local[1]"),避免多线程资源冲突:

spark=SparkSession.builder\
      .appName("Hello Spark")\
      .master("local[1]")\
      .getOrCreate()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 01:05:09