【问题标题】:Spark Streaming with Kafka in Scala在 Scala 中使用 Kafka 进行 Spark Streaming
【发布时间】:2018-09-15 16:03:55
【问题描述】:

我正在尝试使用 IntelliJ 在 Scala 中构建一个 Kafka 消费者,以读取来自 Kafka 主题的消息并将它们保存在 hdfs 上。我正在使用 spark 1.6.2、kafka_2.10-0.10、scala 2.10.5 和 hdp 2.5.3。我收到以下错误:

Exception in thread "main" java.lang.NoSuchMethodError: kafka.consumer.SimpleConsumer.<init>(Ljava/lang/String;IIILjava/lang/String;Lorg/apache/kafka/common/protocol/SecurityProtocol;)V

从我对这里的研究中,我了解到这是一个 jar/依赖问题,但我仍然无法解决它。

【问题讨论】:

    标签: scala apache-spark apache-kafka


    【解决方案1】:

    您必须确保 kafka 库可用于 Spark 运行时。有几种方法可以确保这一点:

    1. 使用 --jars "/location/of/your/kafka-jar" 调用 spark shell 或 spark-submit
    2. 将与 kafka 相关的 jar 复制到 spark 安装的“jars”文件夹中。 (注意:如果您在集群上运行,则必须将这些 jar 复制到所有节点。因此,我推荐上述方法,其中 spark 在内部为您执行此操作)

    【讨论】:

    • 我将 --jars 选项与我的 spark 提交命令一起使用,并为所有 jars 提供路径。其实我也在做第二种方法。
    • 然后尝试使用带有 --jars 选项的完整路径调用“spark-shell”命令。然后在shell中执行语句: import kafka.consumer.SimpleConsumer 是不是导入成功了?
    • 是的,这样导入成功了。
    • 那么这个异常的原因应该是Kafka库版本不兼容。您可以发布您在开发过程中包含的依赖项吗?
    猜你喜欢
    • 1970-01-01
    • 2021-11-19
    • 2016-11-29
    • 2022-01-08
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 2018-07-02
    • 2018-01-13
    相关资源
    最近更新 更多