【问题标题】:AbstractMethodError creating Kafka streamAbstractMethodError 创建 Kafka 流
【发布时间】:2018-08-17 06:25:56
【问题描述】:

我正在尝试使用 createDirectStream 方法打开一个 Kafka(试用版本 0.11.0.2 和 1.0.1)流并收到此 AbstractMethodError 错误:

Exception in thread "main" java.lang.AbstractMethodError
    at org.apache.spark.internal.Logging$class.initializeLogIfNecessary(Logging.scala:99)
    at org.apache.spark.streaming.kafka010.KafkaUtils$.initializeLogIfNecessary(KafkaUtils.scala:39)
    at org.apache.spark.internal.Logging$class.log(Logging.scala:46)
    at org.apache.spark.streaming.kafka010.KafkaUtils$.log(KafkaUtils.scala:39)
    at org.apache.spark.internal.Logging$class.logWarning(Logging.scala:66)
    at org.apache.spark.streaming.kafka010.KafkaUtils$.logWarning(KafkaUtils.scala:39)
    at org.apache.spark.streaming.kafka010.KafkaUtils$.fixKafkaParams(KafkaUtils.scala:201)
    at org.apache.spark.streaming.kafka010.DirectKafkaInputDStream.<init>(DirectKafkaInputDStream.scala:63)
    at org.apache.spark.streaming.kafka010.KafkaUtils$.createDirectStream(KafkaUtils.scala:147)
    at org.apache.spark.streaming.kafka010.KafkaUtils$.createDirectStream(KafkaUtils.scala:124)

我是这样称呼它的:

val preferredHosts = LocationStrategies.PreferConsistent
    val kafkaParams = Map(
      "bootstrap.servers" -> "localhost:9092",
      "key.deserializer" -> classOf[IntegerDeserializer],
      "value.deserializer" -> classOf[StringDeserializer],
      "group.id" -> groupId,
      "auto.offset.reset" -> "earliest"
    )

    val aCreatedStream = createDirectStream[String, String](ssc, preferredHosts,
      ConsumerStrategies.Subscribe[String, String](topics, kafkaParams))

我有 Kafka 在 9092 上运行,我能够创建生产者和消费者并在他们之间传递消息,所以不确定为什么它不能从 Scala 代码中运行。任何想法表示赞赏。

【问题讨论】:

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


【解决方案1】:

我收到了同样的错误。我将依赖项设置为与我的 spark 解释器相同的版本

%spark2.dep
z.reset()
z.addRepo("MavenCentral").url("https://mvnrepository.com/")

z.load("org.apache.spark:spark-streaming-kafka-0-10_2.11:2.3.0")
z.load("org.apache.kafka:kafka-clients:2.3.0")

【讨论】:

    【解决方案2】:

    我有同样的例外,在我的例子中,我创建了依赖于版本 2.1.0 的应用程序 jar,同时尝试部署到 Spark 2.3.0 集群。

    【讨论】:

    • 我在集群中运行 spark submit 时遇到了同样的问题。在我的情况下,开发环境在 2.2.0.2.6.4.0-91 和 QA env 在 2.3.1.3.0.1.0-187 中。你是如何解决这个问题的。你能解释一下吗?你用过哪个版本的 spark-streaming-kafka
    • 我想我将依赖版本从spark-streaming-kafka-0-10_2.11改为2.3.0
    【解决方案3】:

    原来我使用的是 Spark 2.3,我应该使用的是 Spark 2.2。显然该方法在后来的版本中被抽象化了,所以我得到了那个错误。

    【讨论】:

    猜你喜欢
    • 2018-12-21
    • 1970-01-01
    • 2015-12-29
    • 2018-12-24
    • 1970-01-01
    • 2019-12-09
    • 2019-11-16
    • 1970-01-01
    • 2013-08-30
    相关资源
    最近更新 更多