抛出ClassNotFoundException启动Spark Shell

时间:2015-10-12 17:51:58

标签: apache-spark pyspark

我正在尝试使用./bin/pyspark

从目录启动python的spark shell

当我运行命令时,我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError:    org/apache/spark/launcher/Main
Caused by: java.lang.ClassNotFoundException: org.apache.spark.launcher.Main
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

似乎我失踪了:org.apache.spark.launcher.main

我不太确定如何解决这个问题,并且想知道是否有人有任何建议或遇到类似问题。

由于

2 个答案:

答案 0 :(得分:8)

我也遇到了这个问题(在我的Mac上)。

我按照本页中的步骤操作: https://stackoverflow.com/a/14875241/5478610 并且能够克服这个错误。

我认为问题在于,即使我在Mac上安装了Java 8,当我从命令行运行时,它仍然在调用Java 6.

带有类的jar文件(在./lib/spark-assembly-1.5.1-hadoop2.6.0.jar中)无法使用Java 6打开。但是一旦我更新了我的链接以便从中调用java终端将使用Java 8,我能够调出pyspark。

答案 1 :(得分:2)

除了David的回答,请使用

# Change java version to 1.7
export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)

# Change java version to 1.8
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

如果您安装了多个Java版本并想要在它们之间切换,则更改java版本。

我还通过将Java版本更改为1.8来解决了这个问题。在这种情况下,错误消息并不真正相关。