ClassNotFoundException:org.apache.spark.repl.SparkCommandLine

时间:2016-01-15 15:48:22

标签: scala apache-spark pyspark apache-zeppelin

我是Apache Zeppelin的新手,我尝试在本地运行它。我尝试运行一个简单的健全性检查,看看sc是否存在并得到以下错误。

我将它编译为pyspark和spark 1.5(我使用spark 1.5)。我将内存增加到5 GB并将端口更改为8091.

我不确定我做错了什么,所以我得到以下错误,我应该如何解决它。

提前致谢

  

抛出java.lang.ClassNotFoundException:   org.apache.spark.repl.SparkCommandLine at   java.net.URLClassLoader.findClass(URLClassLoader.java:381)at   java.lang.ClassLoader.loadClass(ClassLoader.java:424)at   sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331)at at   java.lang.ClassLoader.loadClass(ClassLoader.java:357)at   org.apache.zeppelin.spark.SparkInterpreter.open(SparkInterpreter.java:401)     在   org.apache.zeppelin.interpreter.ClassloaderInterpreter.open(ClassloaderInterpreter.java:74)     在   org.apache.zeppelin.interpreter.LazyOpenInterpreter.open(LazyOpenInterpreter.java:68)     在   org.apache.zeppelin.spark.PySparkInterpreter.getSparkInterpreter(PySparkInterpreter.java:485)     在   org.apache.zeppelin.spark.PySparkInterpreter.createGatewayServerAndStartScript(PySparkInterpreter.java:174)     在   org.apache.zeppelin.spark.PySparkInterpreter.open(PySparkInterpreter.java:152)     在   org.apache.zeppelin.interpreter.ClassloaderInterpreter.open(ClassloaderInterpreter.java:74)     在   org.apache.zeppelin.interpreter.LazyOpenInterpreter.open(LazyOpenInterpreter.java:68)     在   org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:92)     在   org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer $ InterpretJob.jobRun(RemoteInterpreterServer.java:302)     在org.apache.zeppelin.scheduler.Job.run(Job.java:171)at   org.apache.zeppelin.scheduler.FIFOScheduler $ 1.run(FIFOScheduler.java:139)     在   java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)     在java.util.concurrent.FutureTask.run(FutureTask.java:266)at   java.util.concurrent.ScheduledThreadPoolExecutor中的$ ScheduledFutureTask.access $ 201(ScheduledThreadPoolExecutor.java:180)     在   java.util.concurrent.ScheduledThreadPoolExecutor中的$ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)     在   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617)     在java.lang.Thread.run(Thread.java:745)

更新 我的解决方案是将我的scala版本从2.11。*降级到2.10。*,再次构建Apache Spark并运行Zeppelin。

2 个答案:

答案 0 :(得分:3)

我根据您在评论中回答的内容做出某些假设。当我查看SparkCommandLine Spark's core部分的try not setting SPARK_HOME课程时,听起来Zeppelin设置很好。

现在Zeppelin有自己的最小嵌入式Spark类,如果你没有设置SPARK_HOME,它们会被激活。首先,根据这个github页面,here on the Zeppelin mailing list(你正在设置)和HADOOP_HOME(我不认为你正在设置),看看是否消除了你的底层Spark安装"修复&#34 ;它:

  

没有SPARK_HOME和HADOOP_HOME,Zeppelin使用嵌入式Spark和   使用mvn构建选项指定的Hadoop二进制文件。如果你   想使用系统提供的Spark和Hadoop,导出SPARK_HOME和   zeppelin-env.sh中的HADOOP_HOME您可以使用任何受支持的版本   火花没有重建Zeppelin。

如果可行,那么您知道我们正在查看Java类路径问题。要尝试解决此问题,zeppelin-env.sh文件中还有一个设置,

ZEPPELIN_JAVA_OPTS

提到{{3}},请确保将其设置为指向实际的Spark jar,以便JVM使用-classpath

进行选择

这是我的zeppelin进程的比较,我认为重要的部分是-cp参数,在您的系统上执行ps并查看您的JVM选项以查看它是否类似地指向至

/usr/lib/jvm/java-8-oracle/bin/java -cp /usr/local/zeppelin/interpreter/spark/zeppelin-spark-0.5.5-incubating.jar:/usr/local/spark/conf/:/usr/local/spark/lib/spark-assembly-1.5.1-hadoop2.6.0.jar:/usr/local/spark/lib/datanucleus-rdbms-3.2.9.jar:/usr/local/spark/lib/datanucleus-core-3.2.10.jar:/usr/local/spark/lib/datanucleus-api-jdo-3.2.6.jar
-Xms1g -Xmx1g -Dfile.encoding=UTF-8 -Xmx1024m -XX:MaxPermSize=512m -Dfile.encoding=UTF-8 -Xmx1024m -XX:MaxPermSize=512m -Dzeppelin.log.file=/usr/local/zeppelin/logs/zeppelin-interpreter-spark-jim-jim.log org.apache.spark.deploy.SparkSubmit --conf spark.driver.extraClassPath=:/usr/local/zeppelin/interpreter/spark/zeppelin-spark-0.5.5-incubating.jar
--conf spark.driver.extraJavaOptions=  -Dfile.encoding=UTF-8 -Xmx1024m -XX:MaxPermSize=512m  -Dfile.encoding=UTF-8 -Xmx1024m -XX:MaxPermSize=512m -Dzeppelin.log.file=/usr/local/zeppelin/logs/zeppelin-interpreter-spark-jim-jim.log
--class org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer /usr/local/zeppelin/interpreter/spark/zeppelin-spark-0.5.5-incubating.jar 50309

希望如果不起作用会有所帮助,请编辑您的问题以显示您现有的类路径。

答案 1 :(得分:0)

Zeppelin最近发布了version 0.6.1,它支持Scala 2.11和Spark 2.0。我也对此错误消息感到困惑,因为我可以在类路径中清楚地看到我的Spark主目录。新版Zeppelin效果很好;我目前正在使用Spark 2.0 / Scala 2.11运行它。