我添加了以下依赖项。当我将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)
}
答案 0 :(得分:0)
我认为您可能在没有火花流依赖项的环境中运行此程序(因此无法在其上找到类)。
在这种情况下,您可能需要将依赖项包含在jar本身中。您可以尝试从火花流依赖项定义中删除<scope>provided</scope>
。
编辑:为了提供有关我认为这种情况发生的原因的更多信息,可能您的环境在类路径中具有spark-streaming_2.12依赖项,但没有spark-streaming_2.11。这就是为什么我认为您应该将其包括在超级罐子中(删除提供的部件)。另外,您还可以在环境中包含依赖项,以便您的进程能够找到它。