我正在尝试使用./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
我不太确定如何解决这个问题,并且想知道是否有人有任何建议或遇到类似问题。
由于
答案 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来解决了这个问题。在这种情况下,错误消息并不真正相关。