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

PySpark执行DataFrame代码时出现Py4JJavaError错误求助

PySpark df.show() 抛出Py4JJavaError排查方案

问题描述

执行以下PySpark代码时触发Py4JJavaError:

spark = SparkSession.builder \
    .appName("Test DataFrame") \
    .master("local[*]") \
    .getOrCreate()
data = [("Alice",20), ("Bob",30), ("Charlie",40)]
df = spark.createDataFrame(data).toDF("Name","Age")
df.show()
spark.stop()

错误信息

File 25/10/19 20:05:55 ERROR TaskSetManager: Task 0 in stage 0.0 failed 1 times; aborting job
Traceback (most recent call last):
  File "C:\Users\IdeaProjects\pyspark352\pyspark352\pyspark352new.py", line 12, in <module>
    df.show()
  File "C:\spark352\python\pyspark\sql\dataframe.py", line 947, in show
    print(self._show_string(n, truncate, vertical))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\spark352\python\pyspark\sql\dataframe.py", line 965, in _show_string
    return self._jdf.showString(n, 20, vertical)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\spark352\python\lib\py4j-0.10.9.7-src.zip\py4j\java_gateway.py", line 1322, in __call__
  File "C:\spark352\python\pyspark\errors\exceptions\captured.py", line 179, in deco
    return f(*a, **kw)
           ^^^^^^^^^^^
  File "C:\spark352\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.

已确认环境

  • ✅ Python 3.11.9
  • ✅ Spark 3.5.2
  • ✅ Java 1.8.0_451
  • ✅ PySpark 3.5.2

排查步骤与解决方案

1. 获取完整Java错误栈

当前错误仅展示Python层调用栈,Java端的核心错误信息被截断,这是定位问题的关键:

  • 查看%SPARK_HOME%\logs目录下对应时间点的日志文件,找到完整的Java异常信息(比如内存不足、权限冲突、依赖缺失等)。

2. 调整本地模式资源配置

local[*]会占用所有CPU核心,若机器内存不足会导致Task失败,尝试限制资源:

spark = SparkSession.builder \
    .appName("Test DataFrame") \
    .master("local[1]") \
    .config("spark.driver.memory", "2g") \
    .getOrCreate()

3. 验证Java环境有效性

确认Java配置无异常:

  • 检查JAVA_HOME指向JDK(而非JRE),且在系统PATH中优先级最高。
  • 执行java -version和javac -version,确保版本一致,无多版本Java混用。

4. 排查Python与PySpark兼容性

  • 确认PySpark通过pip install pyspark==3.5.2安装,而非手动复制Spark目录下的Python包,避免版本不匹配。
  • 检查虚拟环境中无其他版本的PySpark或Spark相关依赖,防止依赖冲突。

5. 简化代码定位问题

先测试基础Spark初始化,排除DataFrame相关问题:

spark = SparkSession.builder \
    .appName("Test") \
    .master("local[1]") \
    .getOrCreate()
print(spark.version)
spark.stop()

若此代码正常运行,再逐步添加DataFrame创建和show()操作,缩小问题范围。

6. 解决Windows权限问题

Windows环境下,Spark可能因权限不足无法操作临时文件:

  • 确保运行代码的用户拥有C:\Users\<你的用户名>\AppData\Local\Temp目录的读写权限。
  • 手动指定Spark临时目录:
spark = SparkSession.builder \
    .appName("Test DataFrame") \
    .master("local[1]") \
    .config("spark.local.dir", "D:/spark_temp") \
    .getOrCreate()

需确保D:/spark_temp目录存在且有读写权限。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 04:04:51