无法启动spark-shell

8
我正在使用Spark 1.4.1。 我可以无问题地使用spark-submit。 但是当我运行~/spark/bin/spark-shell时, 我遇到了下面的错误。 我已经配置了SPARK_HOMEJAVA_HOME。 然而,使用Spark 1.2时没有问题。
15/10/08 02:40:30 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Failed to initialize compiler: object scala.runtime in compiler mirror not found.
** Note that as of 2.8 scala does not assume use of the java classpath.
** For the old behavior pass -usejavacp to scala, or if using a Settings
** object programatically, settings.usejavacp.value = true.

Failed to initialize compiler: object scala.runtime in compiler mirror not found.
** Note that as of 2.8 scala does not assume use of the java classpath.
** For the old behavior pass -usejavacp to scala, or if using a Settings
** object programatically, settings.usejavacp.value = true.
Exception in thread "main" java.lang.AssertionError: assertion failed: null
        at scala.Predef$.assert(Predef.scala:179)
        at org.apache.spark.repl.SparkIMain.initializeSynchronous(SparkIMain.scala:247)
        at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1.apply$mcZ$sp(SparkILoop.scala:990)
        at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1.apply(SparkILoop.scala:945)
        at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1.apply(SparkILoop.scala:945)
        at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:135)
        at org.apache.spark.repl.SparkILoop.org$apache$spark$repl$SparkILoop$$process(SparkILoop.scala:945)
        at org.apache.spark.repl.SparkILoop.process(SparkILoop.scala:1059)
        at org.apache.spark.repl.Main$.main(Main.scala:31)
        at org.apache.spark.repl.Main.main(Main.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:665)
        at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:170)
        at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:193)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:112)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

你在哪里设置了 SPARK_HOME?是在你的 .bashrc 文件中吗?因为你得到的错误是由于 SPARK_HOME 没有设置,所以 spark-shell 尝试从 dirname 中找到它。 - user1314742
我应该将SPARK_HOME设置为什么?它应该被设置为export SPARK_HOME=/usr/local/Cellar/apache-spark/2.2.0/bin吗? - lordlabakdas
我认为问题不在于SPARK_HOME。错误的SPARK_HOME会导致spark-shell脚本无法找到spark-submit而失败。然而,当我确保SPARK_HOME正确时,以及直接调用“spark-submit --class org.apache.spark.repl.Main”时,在我的机器上都出现了相同的错误。 - W.P. McNeill
3个回答

1
您可以尝试运行。
spark-shell -usejavacp

对我来说没有用,但在Spark Issue 18778的描述中有人用过。


1
我发现在运行Spark时遇到了相同的问题,但我发现是因为我没有正确配置Scala。确保您已安装Java、Scala和sbt,并构建了Spark:
编辑您的.bashrc文件: vim .bashrc
设置您的环境变量:
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
export PATH=$JAVA_HOME:$PATH

export SCALA_HOME=/usr/local/src/scala/scala-2.11.5
export PATH=$SCALA_HOME/bin:$PATH

export SPARK_HOME=/usr/local/src/apache/spark.2.0.0/spark
export PATH=$SPARK_HOME/bin:$PATH

获取设置信息 . .bashrc

检查Scala版本 scala -version

确保REPL可以启动 scala

如果REPL可以启动,请尝试重新启动Spark Shell。 ./path/to/spark/bin/spark-shell

您应该会得到Spark REPL。


0
你安装了Scala和sbt吗?
日志显示找不到主类。

你认为这是由于 sbt 和 scala 没有放在 PATH 中引起的吗? - worldterminator

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接