PySpark调用df.show()触发Py4JJavaError报错求助
PySpark df.show() 报错:Python worker exited unexpectedly (crashed)
问题概述
代码中SparkSession初始化、DataFrame创建均正常,仅调用df.show()时抛出Py4JJavaError,核心错误为Python worker exited unexpectedly (crashed),并伴随java.io.EOFException。环境配置为Python 3.10/3.12、PySpark 3.4.3、Java 11,已配置系统环境变量。
解决方案
验证Python版本兼容性
PySpark 3.4.3对Python 3.12的支持存在已知适配问题,建议切换至Python 3.10或3.11版本,重新安装PySpark后测试。显式指定Python解释器路径
Spark可能无法自动识别正确的Python解释器,在SparkSession初始化时添加配置指定绝对路径:spark = ( SparkSession.builder.appName("Spark Introduction") .master("local[*]") .config("spark.network.timeout", "800s") .config("spark.executor.heartbeatInterval", "60s") .config("spark.pyspark.python", "C:\\Users\\Bharti\\AppData\\Local\\Programs\\Python\\Python310\\python.exe") .config("spark.pyspark.driver.python", "C:\\Users\\Bharti\\AppData\\Local\\Programs\\Python\\Python310\\python.exe") .getOrCreate() )替换路径为你实际使用的Python解释器绝对路径。
清理并重装PySpark
- 卸载当前PySpark:
pip uninstall -y pyspark - 删除Python site-packages目录下的
pyspark文件夹,以及用户目录下的.spark/.pyspark缓存目录(若存在)。 - 重新安装指定版本:
pip install pyspark==3.4.3
- 卸载当前PySpark:
确认Java环境配置
检查JAVA_HOME环境变量是否指向Java 11的正确路径,且PATH包含%JAVA_HOME%\bin。执行以下命令验证版本:java -version确保输出为Java 11版本,避免多版本Java冲突。
延长Python Worker超时时间
在SparkSession配置中添加超时设置,避免因环境加载缓慢导致worker崩溃:.config("spark.python.worker.timeout", "300")
内容的提问来源于stack exchange,提问作者Bharti Jain
相关产品推荐
相关产品推荐

