繁体   English   中英

齐柏林飞艇:java.lang.NoClassDefFoundError:org/apache/spark/Logging

[英]Zeppelin: java.lang.NoClassDefFoundError: org/apache/spark/Logging

我正在尝试使用 Spark 流在 twitter 上找到热门话题标签。

操作系统 -> mac 操作系统

火花版本-> 2.2.1

Scala 版本-> 2.11.8

齐柏林飞艇版本-> 0.7.3

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

twitter4j-core-4.0.4.jar

twitter4j-stream-4.0.4.jar

spark-streaming-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 文件或任何更改版本的东西。

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

任何帮助将不胜感激!

谢谢

我通过添加罐子找到了解决方案

火花core_2.11-1.5.2.logging.jar

遇到了这个问题,并找到了另一个我认为人们可能想尝试的解决方案。 如果您使用的是更高版本的 spark(我使用的是 3.0),那么我使用 org.apache.bahir 2.40 版会更好。

<!-- https://mvnrepository.com/artifact/org.apache.bahir/spark-streaming-twitter -->
<dependency>
    <groupId>org.apache.bahir</groupId>
    <artifactId>spark-streaming-twitter_2.12</artifactId>
    <version>2.4.0</version>
</dependency>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM