【问题标题】:Code is giving "Exception in thread "main" java.lang.NoClassDefFoundError"代码给出“线程“主”java.lang.NoClassDefFoundError中的异常”
【发布时间】:2019-12-02 02:58:30
【问题描述】:

我添加了以下依赖项。当我将 spark-streaming_2.12 更改为 spark-streaming_2.11 时,会出现此错误

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/streaming/StreamingContext

这些是我的依赖项:

    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-streaming_2.12</artifactId>
      <version>2.4.0</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_2.11</artifactId>
      <version>2.4.0</version>
    </dependency>

我的代码:

def main(args: Array[String]): Unit = {

    val conf = new SparkConf().setAppName("LogProcessor")
    // No need to create sparkContext as StreamingContext itself create one
    val streamer = new StreamingContext(conf,Seconds(20))
    val lines =  streamer.textFileStream("/home/ubuntu/Desktop/test/")
    println(lines)

  }

【问题讨论】:

  • 我收到此错误 --> 线程“main” java.lang.NoClassDefFoundError: org/apache/spark/streaming/StreamingContext 中的异常
  • 请提供有关您如何执行应用程序(以及在何处执行)的更多信息。此外,一个完整的 pom 会很有帮助。您是否正在创建一个包含所有依赖项的 uber jar?

标签: scala maven apache-spark spark-streaming


【解决方案1】:

我认为您可能在没有可用 spark-streaming 依赖项的环境中运行此程序(因此,它无法找到其上的类)。

如果是这种情况,您可能希望将依赖项包含在 jar 本身中。您可以尝试从 spark-streaming 依赖定义中删除 &lt;scope&gt;provided&lt;/scope&gt;

编辑:为了提供更多关于我认为为什么会发生这种情况的信息,可能您的环境在类路径中有 spark-streaming_2.12 依赖项,但不是 spark-streaming_2.11 依赖项。这就是为什么我认为你应该将它包含在一个 uber jar 中(删除提供的部分)。或者,您也可以在您的环境中包含依赖项,以便您的进程能够找到它。

【讨论】:

    猜你喜欢
    • 2011-09-14
    • 2014-11-06
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    相关资源
    最近更新 更多