使用 Spark 2.3 结构化流的 Jar 依赖项错误

Jar dependencies error using Spark 2.3 structured streaming

我完全按照 documentation 使用 spark2.3 结构化流读取 Kafka 1.0 数据,但出现异常:

Caused by: java.lang.ClassNotFoundException: org.apache.kafka.common.TopicPartition`   

如文档所述,我使用的唯一与 kafka 相关的 jar 是 spark-sql-kafka-0-10_2.11-2.3.0.jar

缺少classTopicPartition,它在这个依赖中:

    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-clients</artifactId>
        <version>0.10.0</version>
    </dependency>

另外一个常见问题是需要在 运行 spark-submit 时添加此选项:

--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.3.0

你也必须在你的项目中添加这个库

org.apache.kafka:kafka-clients:0.10.0.0

行家:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>0.10.0.0</version>
</dependency>

sbt:

libraryDependencies += "org.apache.kafka" % "kafka-clients" % "0.10.0.0"

发帖者找到的解决方案

Adding kafka-clients:0.10.0.0.jar to HDFS instead of $SPARK_HOME/jars/

尽管文档中说要添加你已经添加的依赖,但你可能还需要添加以下依赖。

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

它解决了我遇到的一些问题。

PS:我知道第二个依赖项是针对 Spark 流而不是结构化流,但值得一试。