【问题标题】:Spark 2.1.0 connection with Kafka 0.9.0Spark 2.1.0 与 Kafka 0.9.0 的连接
【发布时间】:2018-11-05 13:31:57
【问题描述】:

我正在使用 Kafka 0.9.0 和 Spark 2.1.0 我的 Spark 提交如下:

./spark-submit --jars /home/cnbo/jars/spark-sql-kafka-0-10_2.11-2.1.0.cloudera1.jar --class ClickStream /home/cnbo/jars/sparkstreamingfi_2.11-0.1.jar

我收到以下错误:

java.lang.NoSuchMethodError: org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(Ljava/util/Collection;)V

我知道 0.9 到 0.10 存在版本冲突。但我想在 Kafka 0.9.0 上运行我的应用程序。 现在需要做什么? 我应该使用什么外部 jar 来代替:

spark-sql-kafka-0-10_2.11-2.1.0.cloudera1.jar

提前致谢!!

【问题讨论】:

    标签: apache-spark apache-kafka spark-structured-streaming


    【解决方案1】:

    为了将 Spark 与 Kafka 一起使用,您还需要在 spark.driver.extraClassPathspark.executor.extraClassPath 中添加以下 JAR:

    /home/cnbo/jars/kafka-clients-0.9.0.0.jar

    由于spark-sql-kafka-0-10_2.11-2.1.0.cloudera1.jar不包含KafkaConsumer,我们也需要添加上述JAR文件。所以,最终的spark-submit 命令将是这样的:

    ./spark-submit --jars /home/cnbo/jars/spark-sql-kafka-0-10_2.11-2.1.0.cloudera1.jar:/home/cnbo/jars/kafka-clients-0.9 .0.0.jar --class ClickStream /home/cnbo/jars/sparkstreamingfi_2.11-0.1.jar

    希望对你有帮助!

    【讨论】:

    • 您不应该将kafka-0-10_2.11 与运行 0.9 的代理一起使用,对吗?
    • @cricket_007 我还没有测试过 kafka-0-10_2.11 与运行 0.9 的代理的使用情况。但我假设不同的 Kafka 版本具有向后兼容性。另外,使用 kafka 0.10 会更好,但是,这个问题是专门针对 0.9 提出的。
    • 不兼容...这就是版本增加的原因。此外,Spark 维护两个不同的 Kafka 库。结构化流仅适用于 Kafka 0.10+ spark.apache.org/docs/2.1.1/streaming-kafka-integration.html
    • 那么,由提出问题的人来评论它,即应用程序是否能够在 Kafka 0.9 上运行。如果没有,那么我会更新我的答案。
    • 大家好,抱歉回复晚了。我已经收回了对这个答案的接受,因为我正在使用带有 Kafka 0.9.0 版本的结构化流。我的 Spark 无法使用来自 kafka 主题的任何数据,也不会引发任何错误。只有文件夹是使用 spark_metadata 文件创建的。但我已经解决了 kafkaConsumer.subscribe 错误并获得了 Upvote。
    【解决方案2】:

    如果您阅读 Spark Kafka 页面,您就会看到

    0.8 集成与后来的 0.9 和 0.10 代理兼容,但0.10 集成与早期代理不兼容

    因此,你需要这个库

    spark-streaming-kafka-0-8_2.11
    

    如果你想要结构化流,你需要真正升级 Kafka 以支持新的消费者 API

    【讨论】:

    • 所以我无法将结构化流与 Kafka 0.9.0 一起使用?
    • 我不知道。 Kafka 0.10 增加了对记录中时间戳的支持,我相信这使得数据帧对时间框架数据的支持成为可能。
    猜你喜欢
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2019-01-17
    • 2017-06-27
    • 1970-01-01
    • 2017-06-27
    相关资源
    最近更新 更多