Windows系统PySpark报错:NameError与Java Gateway异常求助
Windows环境下PySpark报错解决方案
一、解决NameError: name 'spark' is not defined
你未初始化SparkSession实例就直接调用spark变量,需先创建SparkSession核心对象:
import pyspark from pyspark.sql import SparkSession from pyspark.sql import DataFrame from pyspark.context import SparkContext # 初始化SparkSession spark = SparkSession.builder \ .appName("YourAppName") \ .getOrCreate() # 执行数据读取操作 df = spark.read.format('db').load()
二、解决PySparkRuntimeError: [JAVA_GATEWAY_EXITED]
该错误由Windows环境下Java配置异常导致,按以下步骤排查修复:
- 安装兼容版本Java:PySpark 3.x适配Java 8/11,PySpark 2.x仅适配Java 8,禁止使用Java 12及以上版本
- 配置系统环境变量:
- 新建
JAVA_HOME变量,值为Java安装根目录(例如C:\Program Files\Java\jdk1.8.0_391) - 将
%JAVA_HOME%\bin添加到系统PATH变量最前端
- 新建
- 验证Java环境:打开命令提示符,执行
java -version和javac -version,确认能正常输出版本信息 - 重启终端/IDE:修改环境变量后必须重启才能生效
- 手动指定Java路径(若上述步骤无效):
在初始化SparkSession时添加Java路径配置:spark = SparkSession.builder \ .appName("YourAppName") \ .config("spark.driver.extraJavaOptions", "-Djava.home=C:/Program Files/Java/jdk1.8.0_391") \ .getOrCreate()
内容的提问来源于stack exchange,提问作者Raven Smith
相关产品推荐
相关产品推荐

