【问题标题】:Rewind and reconsume offset in structured streaming from Kafka在来自 Kafka 的结构化流中倒带和重新使用偏移量
【发布时间】:2021-06-12 14:22:02
【问题描述】:

有没有办法让我们在结构化流中回退偏移量?我使用的是 Spark 版本 3,并且我已将我的startingoffset 配置为最早,之后每次重新启动都会从检查点目录中选择偏移值。

例如:Kafka当前的偏移量是1000,checkpoint目录中提交的偏移量是900。我想再次从800重新消耗偏移量。我怎样才能做到这一点?

如果我取消当前运行并使用以下命令重置消费者组的偏移值。结构化流是否会在重启时从那里选择偏移量而不是考虑检查点目录?

kafka-consumer-groups.sh --bootstrap-server <broker hostname> \
  --group <consumer group> --reset-offsets --to-offset 800 \
  --topic <topicName>:<partition number> \
  --execute

【问题讨论】:

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


    【解决方案1】:

    Spark Structured Streaming 不会将任何偏移量提交回 Kafka,而只会跟踪其检查点文件中消耗的偏移量。

    这意味着使用kafka-consumer-groups.sh 工具将无济于事。

    如果您想从偏移量 800 开始读取,您需要删除检查点文件并使用startingOffsets 中的 readStream 选项,如Structured Streaming + Kafka Integration Guide 中所述:

    【讨论】:

    • 如果我修改检查点目录,我应该修改输出目录以及下面链接中提到的。 kb.databricks.com/streaming/file-sink-streaming.html 删除/更改 Prod 中的目录对我们来说也不是一个简单的选择。在这种情况下,我们可以使用 Spark Direct Streaming,它提供了倒带偏移的选项
    猜你喜欢
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 2019-11-28
    相关资源
    最近更新 更多