gpt4 book ai didi

java - 为什么 Spark 应用程序会失败并显示 "Exception in thread "main"java.lang.NoClassDefFoundError : . ..StringDeserializer"?

转载 作者:行者123 更新时间:2023-12-02 20:45:01 25 4
gpt4 key购买 nike

我正在开发一个 Spark 应用程序,该应用程序使用 Spark 和 Java 监听 Kafka 流。

我使用kafka_2.10-0.10.2.1。

我为 Kafka 属性设置了各种参数:bootstrap.serverskey.deserializervalue.deserializer 等。

我的应用程序编译良好,但当我提交它时,它失败并出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/kafka/common/serialization/StringDeserializer

我确实将StringDeserializer用于key.deserializervalue.deserializer,所以它确实与我编写应用程序的方式有关。

pom.xml中使用的各种maven依赖项:

    <dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.10</artifactId>
<version>2.1.1</version>
</dependency>

<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka-0-10_2.11</artifactId>
<version>2.1.1</version>
</dependency>

我尝试更新spark Streaming/kafka的版本。我在任何地方都找不到太多东西。

最佳答案

正如您在 the comment above 中提到的:

Turned out issue was with uber jar not building correctly.

这正是问题所在。它确实与您如何组装 Spark 应用程序有关,我担心您可能选择了 uber jar 方式。在我看来,这是浪费您在组装和 Spark 提交时间上的时间。

我个人更喜欢使用 --packages 命令行选项,该选项负责在需要时拉取所有必要的依赖项。

$ ./bin/spark-submit --help
...
--packages Comma-separated list of maven coordinates of jars to include
on the driver and executor classpaths. Will search the local
maven repo, then maven central and any additional remote
repositories given by --repositories. The format for the
coordinates should be groupId:artifactId:version.
...

这让您作为 Spark 开发人员的生活变得更加轻松,您不再需要等到 maven/sbt 下载依赖项并将它们组装在一起。它是在 spark-submit 时完成的(也许这也是其他人的工作!:))

您应该spark-submit如下:

spark-submit --packages org.apache.spark:spark-streaming-kafka-0-10_2.11:2.1.1 ...

提出此额外要求的原因是 Spark 的 CLASSPATH 默认情况下不包含 spark-streaming-kafka-0-10 模块(因为大多数时候它被认为是不必要的)。通过执行上述 --packages 命令行,您将触发加载模块(及其传递依赖项)。

您不应将该模块捆绑到 Spark 应用程序的 uber jar 中。

关于java - 为什么 Spark 应用程序会失败并显示 "Exception in thread "main"java.lang.NoClassDefFoundError : . ..StringDeserializer"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44748924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com