使用Kafka Streams中的特定起点进行数据重新处理

时间:2017-12-13 16:08:53

标签: apache-kafka apache-kafka-streams

我正在调查使用Kafka Streams进行数据重新处理。有一个很好的工具可用于数据重新处理,重置流应用程序:Application Reset tool 但是这个工具通常会将应用程序状态重置为零,并从头开始重新处理所有内容。

有些情况下我们想要从特定点重新处理数据,即:

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

同样在Flink中,我们有Savepoints个概念,可以恢复以前的运算符状态并添加新运算符而不会出现任何错误。

我还提到了以下文件:
https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Streams+Data+%28Re%29Processing+Scenarios
https://www.confluent.io/blog/data-reprocessing-with-kafka-streams-resetting-a-streams-application/

想知道:

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

1 个答案:

答案 0 :(得分:0)

此时Kafka Streams没有保存点概念(版本1.0)。

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