Zeppelin:java.lang.NoClassDefFoundError:org / apache / spark / Logging

时间:2018-05-30 09:42:36

标签: scala apache-spark twitter spark-streaming apache-zeppelin

我正在尝试使用Spark流媒体在Twitter上找到热门主题标签。

  

os - > mac os

     

spark-version - > 2.2.1

     

scala-version - > 2.11.8

     

zeppelin-version - > 0.7.3

我正在使用的上述工具和版本。我在我的zeppelin笔记本上添加了三个不同的罐子:

  

twitter4j核-4.0.4.jar

     

twitter4j流-4.0.4.jar

     

火花流-twitter_2.10-1.0.0.jar

import org.apache.spark._
import org.apache.spark.SparkContext._
import org.apache.spark.streaming._
import org.apache.spark.streaming.twitter._
import org.apache.spark.streaming.StreamingContext._

def setUpTwitter() = {
    import scala.io.Source
    for (line <- Source.fromFile("/Users/abhijeet/Documents/sparkscala/SparkScala/twitter.txt").getLines) {
        val fields = line.split(" ")
        if (fields.length == 2){
            System.setProperty("twitter4j.oauth." + fields(0), fields(1))
        }
    }
}
setUpTwitter()
val ssc = new StreamingContext(sc, Seconds(1))
def setupLogging() = {
    import org.apache.log4j.{Level, Logger}
    val rootLogger = Logger.getRootLogger()
    rootLogger.setLevel(Level.ERROR)
}
setupLogging()

在代码中,zeppelin工作得很好

val tweets = TwitterUtils.createStream(ssc, None)

在上面的行中它开始抛出错误

java.lang.NoClassDefFoundError: org/apache/spark/Logging
  at java.lang.ClassLoader.defineClass1(Native Method)
  at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
  at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
  at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
  at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  at org.apache.spark.streaming.twitter.TwitterUtils$.createStream(TwitterUtils.scala:44)
  ... 56 elided
Caused by: java.lang.ClassNotFoundException: org.apache.spark.Logging
  at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  ... 69 more

之后我发现org.apache.spark.Logging在Spark 1.5.2或更低版本中可用。它不在2.0.0中。

我担心的是我正在使用Zeppelin。我这里没有pom文件或任何改变版本的东西。

解决此错误的方法是什么?

非常感谢任何帮助!

谢谢

1 个答案:

答案 0 :(得分:1)

我通过添加jar

找到了解决方案
  

火花core_2.11-1.5.2.logging.jar