代码给出了“线程“主”中的异常java.lang.NoClassDefFoundError”

时间:2019-07-24 03:15:42

标签: scala maven apache-spark spark-streaming

我添加了以下依赖项。当我将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)

  }

1 个答案:

答案 0 :(得分:0)

我认为您可能在没有火花流依赖项的环境中运行此程序(因此无法在其上找到类)。

在这种情况下,您可能需要将依赖项包含在jar本身中。您可以尝试从火花流依赖项定义中删除<scope>provided</scope>

编辑:为了提供有关我认为这种情况发生的原因的更多信息,可能您的环境在类路径中具有spark-streaming_2.12依赖项,但没有spark-streaming_2.11。这就是为什么我认为您应该将其包括在超级罐子中(删除提供的部件)。另外,您还可以在环境中包含依赖项,以便您的进程能够找到它。