Mac系统运行pyspark报Java gateway进程提前退出错误求助
PySpark启动报错解决方案
报错核心原因
你当前使用的Java版本为9及以上版本,Java 9引入的模块化访问限制,和当前Spark版本的底层调用逻辑冲突,触发了反射访问权限报错。
解决方法
方案1:更换兼容Java版本(推荐,稳定性最高)
- 卸载本地当前高版本Java,安装 JDK 8 或 JDK 11,选择和你的Mac芯片(Intel/ARM)匹配的安装包即可
- 打开shell配置文件,zsh用户编辑
~/.zshrc,bash用户编辑~/.bash_profile,添加如下配置:
# 安装JDK8则使用这行配置 export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) # 安装JDK11则使用这行配置 # export JAVA_HOME=$(/usr/libexec/java_home -v 11) export PATH=$JAVA_HOME/bin:$PATH
- 执行
source ~/.zshrc(zsh)或source ~/.bash_profile(bash)使配置生效 - 执行
java -version确认版本匹配后,重新运行pyspark测试即可
方案2:添加启动参数绕过限制(适合不想更换Java版本的场景)
- 打开上述shell配置文件,添加如下配置:
export SPARK_OPTS="--add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED"
- 执行source命令使配置生效后,重新启动pyspark即可
补充说明
如果是通过conda、pip安装的PySpark,需注意版本匹配:Spark 2.x推荐搭配JDK8使用,Spark 3.x支持JDK8和JDK11。
内容的提问来源于stack exchange,提问作者Conor
相关产品推荐
相关产品推荐

