Win10安装Spark启动报None.org.apache.spark.api.java.JavaSparkContext错误如何解决
问题解决方法
你遇到的java.lang.IllegalAccessError核心报错是Spark与Java版本不兼容导致的,目前Spark 3.0~3.3官方仅支持Java 8、Java 11两个大版本,更高版本的Java收紧了内部模块访问权限,会触发该类权限错误。下面是具体解决步骤:
1. 更换兼容的Java版本
- 卸载当前安装的高版本JDK、JRE
- 下载安装Java 8或Java 11,安装完成后更新
JAVA_HOME用户/系统环境变量为新的JDK安装路径(如C:\jdk11),同时将JDK下的bin目录加入Path环境变量 - 打开终端执行
java -version,确认返回版本为1.8.x(Java 8)或11.x.x(Java 11)即为配置生效
2. 修复cmd执行pyspark跳转微软应用商店问题
该问题由Windows默认开启的Python应用安装别名导致:
- 打开Windows系统设置,搜索「管理应用执行别名」
- 将列表中「应用安装程序」对应的Python、Python3选项全部关闭即可
3. 验证Spark可用性
- 重启终端后执行
pyspark,确认可以正常加载Spark欢迎界面 - 也可以运行测试代码验证功能正常:
from pyspark.sql import SparkSession # 初始化SparkSession spark = SparkSession.builder.appName('testApp').getOrCreate() # 打印Spark版本 print(spark.version) spark.stop()
如果更换Java版本后仍有报错,确认你使用的winutils.exe版本与当前安装的pyspark版本匹配即可。
如果不想降级Java,也可以通过添加JVM启动参数临时兼容高版本Java,创建SparkSession时添加对应配置即可:
spark = SparkSession.builder \ .appName('testApp') \ .config('spark.driver.extraJavaOptions', '--add-exports java.base/sun.nio.ch=ALL-UNNAMED') \ .config('spark.executor.extraJavaOptions', '--add-exports java.base/sun.nio.ch=ALL-UNNAMED') \ .getOrCreate()
该方案为临时兼容方案,学习测试可用,生产环境建议优先使用官方支持的Java版本。
内容的提问来源于stack exchange,提问作者lazarea
相关产品推荐
相关产品推荐

