当我尝试用脚本启动火花时 start-all.sh 它抛出错误
> localhost: failed to launch: nice -n 0 bin/spark-class
> org.apache.spark.deploy.worker.Worker --webui-port 8081
> spark://dev-pipeline-west-eu.jwn4tgenexauzewylryxtm545b.ax.internal.cloudapp.net:7077
> localhost: at
> sun.launcher.LauncherHelper.loadMainClass(java.base@9-internal/LauncherHelper.java:585)
> localhost: at
> sun.launcher.LauncherHelper.checkAndLoadMain(java.base@9-internal/LauncherHelper.java:497)
> localhost: full log in
> /spark-2.1.0-bin-hadoop2.7/logs/spark-shankar-org.apache.spark.deploy.worker.Worker-1-dev-pipeline-west-eu.out
当我查看可用的日志文件时,/spark-2.1.0-bin-hadoop2.7/logs/spark-shankar-org.apache.spark.deploy.worker.Worker-1-dev-pipeline-west-eu.out
有以下错误日志。
> Error: A JNI error has occurred, please check your installation and
> try again Exception in thread "main"
> java.lang.ArrayIndexOutOfBoundsException: 64
> at java.util.jar.JarFile.match(java.base@9-internal/JarFile.java:983)
> at java.util.jar.JarFile.checkForSpecialAttributes(java.base@9-internal/JarFile.java:1017)
> at java.util.jar.JarFile.isMultiRelease(java.base@9-internal/JarFile.java:399)
> at java.util.jar.JarFile.getEntry(java.base@9-internal/JarFile.java:524)
> at java.util.jar.JarFile.getJarEntry(java.base@9-internal/JarFile.java:480)
> at jdk.internal.util.jar.JarIndex.getJarIndex(java.base@9-internal/JarIndex.java:114)
是什么导致了错误?
我在 Ubuntu 16.04 上遇到了同样的问题。更新 Java 解决了这个问题:
sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
解决方案使用 Java 版本 8 而不是版本 9。
选项 1一种选择是卸载 Java(版本 9(并重新安装 Java(版本 8(。 (您可以查看此帖子以安装 Java ;请确保进行必要的更改,以便安装版本 8。
选项 2如果您同时安装了这两个命令并且使用的是 Ubuntu,则可以使用以下命令:
sudo update-alternatives --config java
对于您将看到的提示,使用与 Java 8 关联的整数进行响应,然后按回车键。
形式:http://continualintegration.com/miscellaneous-articles/how-do-you-troubleshoot-the-spark-shell-error-a-jni-error-has-occurred