You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacBook运行pyspark启动时报Java异常如何排查修复?

问题根因

你遇到的报错核心是Spark 3.1.2版本与JDK 16不兼容:Java 9之后引入的模块化系统限制了跨模块反射访问权限,而Spark 3.1.x系列官方仅支持JDK 8和JDK 11,使用JDK 16会触发java.nio模块的访问权限异常,导致Java网关进程启动失败。

解决方案

方案一(推荐):切换到兼容的JDK版本

操作步骤如下:

  1. 执行命令查看本机所有已安装的JDK版本:
    /usr/libexec/java_home -V
  2. 在输出中找到JDK 8(你已经安装了jre-8u301,对应版本号为1.8.0_301)对应的路径,修改~/.bash_profile中的JAVA_HOME配置,替换原有配置为:
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
    如果偏好使用JDK 11,将上方命令中-v后的参数改为11即可。
  3. 执行命令让配置生效:
    source ~/.bash_profile

注意:如果你的终端使用的是macOS Catalina之后默认的zsh,需要将上述配置添加到~/.zshrc文件中,再执行source ~/.zshrc生效。

  1. 验证JDK版本是否切换成功:
    java -version
    确认输出为1.8.x或11.x版本后,重新执行pyspark即可正常启动。

方案二:保留JDK 16,添加启动参数绕过权限限制

如果需要保留JDK 16作为系统默认Java版本,可以通过添加JVM启动参数放开模块访问限制:
修改~/.bash_profile(或~/.zshrc),添加以下环境变量:

export PYSPARK_SUBMIT_ARGS="--add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED pyspark-shell"

配置生效后重新启动pyspark即可。

内容的提问来源于stack exchange,提问作者Ying Xiong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:54:02