Windows 11下Spark 3.0.0启动spark-shell报错求助
排查并解决Spark Shell启动报错问题
环境信息
- 操作系统:Windows 11
- 已下载组件及路径:
Spark -> C:\spark-3.0.0-bin-hadoop2.7 Winutils -> C:\winutils Java -> C:\Program Files\Java\jdk-22.0.1
环境变量配置错误
当前环境变量映射完全错误:
HADOOP_HOME ='c:\\spark-3.0.0-bin-hadoop2.7' , JAVA_HOME = 'c:\\winutils', SPARK_HOME = 'c:\\Program Files\\Java\\jdk-22.0.1'
启动报错信息
运行spark-shell时触发以下错误:
C:\spark-3.0.0-bin-hadoop2.7\bin>spark-shell Exception in thread "main" java.lang.ExceptionInInitializerError at org.apache.spark.unsafe.array.ByteArrayMethods.<clinit>(ByteArrayMethods.java:54) at org.apache.spark.internal.config.package$.<init>(package.scala:1006) at org.apache.spark.internal.config.package$.<clinit>(package.scala) at org.apache.spark.deploy.SparkSubmitArguments.$anonfun$loadEnvironmentArguments$3(SparkSubmitArguments.scala:157) at scala.Option.orElse(Option.scala:447) at org.apache.spark.deploy.SparkSubmitArguments.loadEnvironmentArguments(SparkSubmitArguments.scala:157) at org.apache.spark.deploy.SparkSubmitArguments.<init>(SparkSubmitArguments.scala:115) at org.apache.spark.deploy.SparkSubmit$$anon$2$$anon$3.<init>(SparkSubmit.scala:990) at org.apache.spark.deploy.SparkSubmit$$anon$2.parseArguments(SparkSubmit.scala:990) at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:85) at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1007) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1016) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) Caused by: java.lang.IllegalStateException: java.lang.NoSuchMethodException: java.nio.DirectByteBuffer.<init>(long,int) at org.apache.spark.unsafe.Platform.<clinit>(Platform.java:62) ... 13 more Caused by: java.lang.NoSuchMethodException: java.nio.DirectByteBuffer.<init>(long,int) at java.base/java.lang.Class.getConstructor0(Class.java:3784) at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2955) at org.apache.spark.unsafe.Platform.<clinit>(Platform.java:55) ... 13 more
解决步骤
1. 修正环境变量映射
将环境变量修改为正确路径:
- HADOOP_HOME:
C:\winutils - JAVA_HOME:
C:\Program Files\Java\jdk-22.0.1(后续需替换为兼容版本) - SPARK_HOME:
C:\spark-3.0.0-bin-hadoop2.7
同时将%SPARK_HOME%\bin和%HADOOP_HOME%\bin添加到系统Path变量中。
2. 更换兼容的Java版本
Spark 3.0.0仅支持Java 8 ~ Java 11,当前使用的Java 22版本过高,导致DirectByteBuffer构造方法API不兼容。
- 下载安装Java 8或Java 11版本
- 更新
JAVA_HOME指向新安装的Java路径,例如:C:\Program Files\Java\jdk1.8.0_381
3. 验证环境变量生效
打开新的命令提示符,执行以下命令确认路径正确:
echo %HADOOP_HOME% echo %JAVA_HOME% echo %SPARK_HOME%
4. 重新启动Spark Shell
在新的命令提示符中切换到Spark的bin目录,运行spark-shell即可正常启动。
内容的提问来源于stack exchange,提问作者sai krishna ragula
相关产品推荐
相关产品推荐

