【问题标题】:Spark Streaming Kafka java.lang.ClassNotFoundException: org.apache.kafka.common.serialization.StringDeserializerSpark Streaming Kafka java.lang.ClassNotFoundException:org.apache.kafka.common.serialization.StringDeserializer
【发布时间】:2017-08-22 11:47:43
【问题描述】:

我在 Kafka 集成中使用 spark 流式传输,当我在本地模式下从我的 IDE 运行流式传输应用程序时,一切都像一个魅力。但是,一旦我将其提交到集群,我就会不断出现以下错误:

java.lang.ClassNotFoundException: org.apache.kafka.common.serialization.StringDeserializer

我正在使用 sbt 程序集来构建我的项目。

我的 sbt 是这样的:

libraryDependencies ++= Seq(
  "org.apache.spark" % "spark-streaming-kafka-0-10_2.11" % "2.2.0" % Provided,
  "org.apache.spark" % "spark-core_2.11" % "2.2.0" % Provided,
  "org.apache.spark" % "spark-streaming_2.11" % "2.2.0" % Provided,
  "org.marc4j" % "marc4j" % "2.8.2",
  "net.sf.saxon" % "Saxon-HE" % "9.7.0-20"
)


run in Compile := Defaults.runTask(fullClasspath in Compile, mainClass in (Compile, run), runner in (Compile, run)).evaluated


mainClass in assembly := Some("EstimatorStreamingApp")

我也尝试使用 --package 选项

尝试 1

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

尝试 2

--packages org.apache.spark:spark-streaming-kafka-0-10-assembly_2.11:2.2.0

一切都没有成功。有没有人有什么建议

【问题讨论】:

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


    【解决方案1】:

    您需要从 Kafka 依赖项中删除“已提供”标志,因为它是 Spark 未提供 OOTB 的依赖项:

    libraryDependencies ++= Seq(
      "org.apache.spark" % "spark-streaming-kafka-0-10_2.11" % "2.2.0",
      "org.apache.spark" % "spark-core_2.11" % "2.2.0" % Provided,
      "org.apache.spark" % "spark-streaming_2.11" % "2.2.0" % Provided,
      "org.marc4j" % "marc4j" % "2.8.2",
      "net.sf.saxon" % "Saxon-HE" % "9.7.0-20"
    )
    

    【讨论】:

      猜你喜欢
      • 2019-08-08
      • 2016-03-12
      • 2018-05-17
      • 1970-01-01
      • 2017-12-28
      • 2020-10-29
      • 2019-01-15
      • 2015-10-15
      • 2021-02-28
      相关资源
      最近更新 更多