首页 文章

ClassNotFoundException:org.apache.spark.repl.SparkCommandLine

提问于
浏览
6

我是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),位于org.apache.zeppelin.spark.SparkInterpreter.open(SparkInterpreter.java:401)的java.lang.ClassLoader.loadClass(ClassLoader.java:357) . aplet.zeppelin.interpreter.ClassloaderInterpreter.open(ClassloaderInterpreter.java:74)org.apache.zeppelin.interpreter.LazyOpenInterpreter.open(LazyOpenInterpreter.java:68)at 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)at org.apache.zeppelin.interpreter org.apache.zeppelin.interpreter.La中的.ClassloaderInterpreter.open(ClassloaderInterpreter.java:74) zyOpenInterpreter.open(LazyOpenInterpreter.java:68)位于org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:92)org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer $ InterpretJob.jobRun(RemoteInterpreterServer.java: 302)atg.apache.zeppelin.scheduler.Job.run(Job.java:171)atg.apache.zeppelin.scheduler.FIFOScheduler $ 1.run(FIFOScheduler.java:139)at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)位于java.util.concurrent.FutureTask.run(FutureTask.java:266)java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201(ScheduledThreadPoolExecutor.java:180)at java . java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:)中的util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 617)在java.lang.Thread.run(Thread.java:745)

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

2 回答

  • 3

    我根据您在评论中回答的内容做出某些假设 . 这听起来像Zeppelin设置很好,当我看着SparkCommandLine这是Spark's core的一部分时 .

    现在Zeppelin有自己的最小嵌入式Spark类,如果你没有设置SPARK_HOME,它们会被激活 . 首先,根据这个github页面,try not setting SPARK_HOME(你正在设置)和HADOOP_HOME(我认为你没有设置),看看是否消除你的底层Spark安装"fixes":

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

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

    ZEPPELIN_JAVA_OPTS
    

    提到here on the Zeppelin mailing list,请确保将其设置为指向实际的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
    

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

  • 0

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

相关问题