PySpark创建SparkSession遇RuntimeError:Java网关进程异常退出求助
解决PySpark启动SparkSession时的RuntimeError问题
从错误日志里的关键提示La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte.(文件名、目录或卷语法不正确)和Failed to find Spark jars directory.,可以确定问题出在Spark路径配置错误或者路径包含非法字符,导致PySpark无法找到依赖的JAR包,进而无法启动Java网关。
以下是具体的排查和解决步骤:
- 检查Spark安装路径:确保Spark的根目录路径没有空格、中文或其他特殊字符(比如
C:\Spark是合法路径,C:\我的工具\Spark或C:\Spark 3.5会触发路径语法错误)。 - 验证环境变量配置:
- 确认
SPARK_HOME指向Spark的根目录(例如C:\spark-3.5.0-bin-hadoop3),而非bin或jars子目录。 - 将
%SPARK_HOME%\bin添加到系统PATH环境变量中。 - 检查
JAVA_HOME是否指向JDK 8或11的根目录(PySpark对JDK版本有要求,高版本可能不兼容),且路径同样不能有特殊字符。
- 确认
- 测试Spark独立启动:打开命令提示符,输入
spark-shell,如果能正常进入Scala交互界面,说明Spark本身没问题;如果报错,先解决Spark的基础启动问题。 - 配置PyCharm的运行环境:
- 重启PyCharm以确保它读取到最新的系统环境变量。
- 或者直接在Run Configuration的
Environment variables中手动添加SPARK_HOME和JAVA_HOME,避免系统环境变量的冲突。
- 代码中强制指定JAR路径(备选方案):如果环境变量始终不生效,可以在代码里直接配置Spark的JAR路径:
import pyspark from pyspark.sql import SparkSession from pyspark import SparkConf conf = SparkConf() # 替换成你的Spark jars目录绝对路径,注意用斜杠/或者双反斜杠\\ conf.set("spark.driver.extraClassPath", "C:/spark-3.5.0-bin-hadoop3/jars/*") conf.set("spark.executor.extraClassPath", "C:/spark-3.5.0-bin-hadoop3/jars/*") spark = SparkSession.builder.config(conf=conf).appName('Practice').getOrCreate()
内容的提问来源于stack exchange,提问作者sewalevrai
相关产品推荐
相关产品推荐

