当源主题分区计数更新时,如何更新内部变更日志主题分区?

Nar*_*123 2 apache-kafka kafka-consumer-api kafka-producer-api apache-kafka-streams

我有一个应用程序,其中使用 Kstream-Kstream 连接和 Ktream-Ktable 连接。我已将输入源主题分区计数从 4 更新为 16,并且应用程序因以下错误而停止。

Could not create internal topics: Existing internal topic application-test-processor-KSTREAM-JOINTHIS-0000000009-store-changelog has invalid partitions. Expected: 16 Actual: 4. Use 'kafka.tools.StreamsResetter' tool to clean up invalid topics before processing. Retry #3

当源主题分区计数更新时,如何更新内部变更日志主题分区计数?

注意:我们使用的kafka版本:0.10.2.1

我从此链接查看了应用程序重置工具:https://docs.confluence.io/current/streams/developer-guide/app-reset-tool.html ,但它没有说明如何更新更改日志分区。

提前致谢。

Mat*_*Sax 5

实际上建议使用重置工具。

应用程序的状态根据输入分区的数量进行分片。最初是 4。因此,将其更改为 16 会破坏应用程序。如果您手动将分区添加到变更日志主题(可能会解决异常,但不能真正解决问题),则状态将不会重新分配,因此会被损坏。

如果您使用重置工具,您将删除所有状态并让您的应用程序从头开始重新处理所有输入数据。这允许 Kafka Streams 正确地重新创建状态(现在有 16 个分片)。