我是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。
答案 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运行它。