微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

spark-shell 命令出错windows cmd 和 cygwin

如何解决spark-shell 命令出错windows cmd 和 cygwin

使用 Windows 10、jdk 16.0.1、scala 2.13.5、spark 3.1.1、hadoop 2.7,命令 spark-shell 在 cmd.exe 中出现以下错误

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:1095)
        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:1013)
        at org.apache.spark.deploy.SparkSubmit$$anon$2.parseArguments(SparkSubmit.scala:1013)
        at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:85)
        at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1030)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1039)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make private java.nio.DirectByteBuffer(long,int) accessible: module java.base does not "opens java.nio" to unnamed module @7530ad9c
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
        at java.base/java.lang.reflect.Constructor.checkCanSetAccessible(Constructor.java:188)
        at java.base/java.lang.reflect.Constructor.setAccessible(Constructor.java:181)
        at org.apache.spark.unsafe.Platform.<clinit>(Platform.java:56)
        ... 13 more

Cygwin:

D:\Java\jdk-16.0.1\bin\java -cp "D:\spark/conf\;D:\spark\jars\*" "-Dscala.usejavacp=true" "-Djline.terminal=unix" -Xmx1g org.apache.spark.deploy.SparkSubmit --class org.apache.spark.repl.Main --name "Spark shell" spark-shell
D:\spark/bin/spark-class: line 96: CMD: bad array subscript

[编辑/]

我刚刚通过使用 spark 2.4.7 并为 winutils 制作单独的 hadoop\bin 解决了这个问题。虽然我想问为什么会这样?

解决方法

我刚刚解决了这个错误。这是一个Java版本问题。如果您查看 spark 文档,则它不支持除 java 8 或 11 之外的任何其他内容。

请在此处找到链接:https://spark.apache.org/docs/latest/

尝试安装 Java 8,然后设置其各自的环境变量。您无需将 Hadoop 和 Spark 版本更改为 2.7。它也适用于 3.2.1 版。

完成设置后,重新启动 cmd 提示符并输入:spark-shell 和魔法发生!!!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。