PySpark代码显示DataFrame出错:py4j.protocol.Py4JJavaError

0 投票
1 回答
44 浏览
提问于 2025-04-12 09:29

我在运行这段代码来显示一个数据框(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()

但是,我遇到了以下错误:

文件 "C:\Program Files\Hadoop\spark-3.5.1\python\lib\py4j-0.10.9.7-src.zip\py4j\protocol.py",第326行,调用get_return_value时出错 py4j.protocol.Py4JJavaError: 调用o46.showString时发生错误。 : org.apache.spark.SparkException: 由于阶段失败,作业被中止:阶段0.0中的任务0失败了1次,最近一次失败:在阶段0.0中丢失了任务0.0 (TID 0) (Prince-PC执行器驱动):org.apache.spark.SparkException: Python工作进程意外退出(崩溃)

我尝试将路径变量 PYSPARK_DRIVER_PYTHON 设置为最新版本的Python,这个版本和项目中使用的版本是一样的,但这并没有解决问题。

1 个回答

0

把Python的版本从3.12.1降到3.11.8应该可以解决这个问题。另外,尽量不要从pyspark.sql里导入所有东西,你只需要:

from pyspark.sql.session import SparkSession

撰写回答