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

PySpark调用.show()查看DataFrame遇Py4JJavaError错误求助

PySpark DataFrame.show() 抛出Py4JJavaError(EOFException)解决方案

问题重现

调用PySpark DataFrame的.show()方法时触发Py4JJavaError,核心异常为java.io.EOFException,错误栈片段如下:

Py4JJavaError                             Traceback (most recent call last)
c:\Users\user\Documents\Python Programming\PySpark_for_Big_Data.ipynb Cell 20 line 1
----> 1 ds.show()

File C:\spark\spark-3.5.1-bin-hadoop3\python\pyspark\sql\dataframe.py:945, in DataFrame.show(self, n, truncate, vertical)
...
Caused by: java.io.EOFException
    at java.base/java.io.DataInputStream.readInt(DataInputStream.java:386)
    at org.apache.spark.api.python.PythonRunner$$anon$3.read(PythonRunner.scala:774)
    ... 26 more

环境信息

  • 本地Spark版本:spark-3.5.1-bin-hadoop3
  • Pip安装的PySpark:已安装
  • 环境变量:
    • HADOOP_HOME: C:\hadoop(含Hadoop3版本winutils)
    • SPARK_HOME: C:\spark\spark-3.5.1-bin-hadoop3
    • JAVA_HOME: C:\Program Files\Java\jdk-20
    • SPARK_LOCAL_IP: 127.0.0.1
    • PYTHONPATH: %SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j-0.10.9.7-src.zip
    • PATH: 包含%HADOOP_HOME%\bin、%SPARK_HOME%\bin
  • 软件版本:
    • Java: java 20.0.2 2023-07-18
    • Python: Python 3.12.0
    • Spark: Spark 3.5.1
    • VS Code内核:%USERPROFILE%\AppData\Local\Programs\Python\Python312\python.exe

解决方案

1. 修正Python版本兼容性

Spark 3.5.1官方仅支持Python 3.8~3.11,Python 3.12不在兼容列表中,这是触发EOFException的常见原因:

  • 降级Python到3.11.x版本,重新配置VS Code使用对应Python内核
  • 确保项目虚拟环境绑定降级后的Python版本

2. 统一PySpark与本地Spark版本

同时存在本地Spark包和pip安装的PySpark时,易出现版本不匹配:

  • 执行pip show pyspark查看安装版本,确保与本地Spark的3.5.1完全一致
  • 若版本不一致,卸载现有PySpark:pip uninstall pyspark -y,再安装指定版本:pip install pyspark==3.5.1

3. 更换兼容的Java版本

Spark 3.5.1支持的Java版本为8、11、17,Java 20属于非兼容版本:

  • 安装Java 17(推荐LTS版本),修改JAVA_HOME环境变量指向Java 17的安装路径
  • 更新PATH变量,将%JAVA_HOME%\bin移到最前端,避免系统优先调用旧版本Java

4. 验证Winutils配置

确保Hadoop的winutils版本与本地Spark绑定的Hadoop版本一致(Spark 3.5.1绑定Hadoop3):

  • 检查C:\hadoop\bin下的winutils.exe是否为Hadoop3.x版本
  • 执行winutils.exe chmod 777 C:\tmp\hive(若临时目录不存在先创建),修复Hive权限问题

5. 调整Spark运行配置

在初始化SparkSession时添加显式配置,避免跨进程通信异常:

from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .master("local[*]") \
    .appName("FixEOFException") \
    .config("spark.driver.bindAddress", "127.0.0.1") \
    .config("spark.executor.instances", "1") \
    .getOrCreate()

6. 重启运行环境

  • 关闭VS Code及所有Python进程,刷新环境变量(可重启电脑确保生效)
  • 重新打开项目,使用新配置的Python内核运行代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 06:42:39