数据重新处理Kafka流中的特定起点



我正在研究使用Kafka流进行重新处理的数据。有一个不错的工具可用于重置流应用程序的数据重新处理:应用程序重置工具。
但是此工具通常将应用程序状态重置为零,并从头开始重新处理所有内容。

有一些方案,我们想从特定点重新处理数据,即:

  • 当前应用程序中的错误修复
  • 使用一些附加处理器更新应用程序,并使用相同的应用程序ID
  • 运行

与Flink一样,我们也有SavePoints概念,可以还原以前的操作员状态并添加新操作员而不会出错。

我还提到以下文档:
https://cwiki.apache.org/confluence/display/kafka/kafka streams data data %(Re)Processing Scenarios
https://www.confluent.io/blog/data-reprocessing-with-kafka-streams-resetting-a-treams-application/

想知道:

  1. KStream中是否有任何检查点类型的机制?
  2. 如何从特定点重新运行Kafka流应用程序?
  3. 如果我们在应用程序实例之一中更改代码并使用旧应用ID运行会发生什么?

kafka流目前没有保存点概念(版本1.0)。

  1. 目前不是(v1.0)
  2. 是的。在下一个版本中,这将是直接重置工具的一部分。在1.0中,您可以使用bin/kafka-consumer-groups.sh为应用程序提交起始偏移量(注意,application.id == group.id)。对于较旧的Kafka版本,您可以构建一个自定义工具来提交开始偏移
  3. 一般而言,它会破裂。因此,您需要使用新的application.id(这是一个知道的问题,并且将在将来的版本中解决)。

相关内容

  • 没有找到相关文章

最新更新