Apache spark 火花流不符合自动补偿重置的要求;“最小的”;还是组id?

Apache spark 火花流不符合自动补偿重置的要求;“最小的”;还是组id?,apache-spark,apache-kafka,spark-streaming,Apache Spark,Apache Kafka,Spark Streaming,我正在Spark 1.6中创建卡夫卡流: kafkaProps.setConfig("group.id", UUID.randomUUID().toString()) kafkaProps.createConfiguration() kafkaProps.toImmutableMap.foreach {keyVal => println(keyVal._1 + "=" + keyVal._2)} val ssc = new StreamingContext( sc, Seconds(2

我正在Spark 1.6中创建卡夫卡流:

kafkaProps.setConfig("group.id", UUID.randomUUID().toString())

kafkaProps.createConfiguration()
kafkaProps.toImmutableMap.foreach {keyVal => println(keyVal._1 + "=" + keyVal._2)}

val ssc = new StreamingContext( sc, Seconds(2) ) 
val stream = ssc.createKafkaStream[String, String,  StringDeserializer, StringDeserializer](
                     kafkaProps,
                     List(kafkaProps.getConfig("kafka.topic"))
                     )
stream.print()

ssc.start()
ssc.awaitTerminationOrTimeout(30000)
ssc.stop(stopSparkContext=false, stopGracefully=true)
《卡夫卡普洛普》包括:

...
group.id=3abedbf7-2aed-436a-b4bc-0517a9c5c419
...
auto.offset.reset=smallest
...
每当我根据需要运行代码时,group.id就会更改其值。我认为这足以在每次从Kafka消费时运行应用程序时将偏移量重置为零,但主题中的旧项无法检索


有什么想法吗?

你有没有尝试过用“最早的”而不是“最小的”作为价值观

[最新、最早、无]是新消费者的价值观


[最小、最大]是旧消费者的值

我找不到方法
StreamingContext\createKafkaStream
的定义。你能澄清一下你在哪里找到的吗

尝试使用中提到的
KafkaUtils
创建卡夫卡流

val directKafkaStream=KafkaUtils.createDirectStream[
[密钥类],[值类],[密钥解码器类],[值解码器类]](
streamingContext,[卡夫卡参数映射],[要使用的主题集])

自从这个话题被提出以来,似乎已经过去了很多年。然而,我想回答其他人谁将谷歌搜索它

答案是streaming-kafka-010忽略了“auto.offset.reset”,如果没有,就简单地将其设置为“none”

您可以在org.apache.spark.streaming.kafka010.KafkaUtil的方法fixKafkaParams中找到这段代码

logWarning(s"overriding ${ConsumerConfig.AUTO_OFFSET_RESET_CONFIG} to none for executor")
kafkaParams.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "none")
在org.apache.spark.streaming.kafka010.KafkaRDD中有关于重写的进一步解释,其中“auto.offset.rest”的值被重新检查

require("none" ==    kafkaParams.get(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG).asInstanceOf[String],
ConsumerConfig.AUTO_OFFSET_RESET_CONFIG +
  " must be set to none for executor kafka params, else messages may not match offsetRange")

一般来说,“auto.offset.reset”在KafkaStreaming中不受支持

什么类型是
kafkapprops
?我希望它是一个映射,但似乎不是,尽管spark可能会调用一个方法,将其作为映射返回,如果您在配置对象上调用隐式的,您看到您的属性在那里正确设置了吗?是的,我更新了问题以反映这一点。是的。不幸的是,这并没有产生任何影响。