我们有一个kafka的实例,大约有50M条记录,每天大约有100k的输入,所以在kafka世界里没有什么疯狂的。当我们想用一个更复杂的流应用程序(有许多不同的聚合步骤)重新处理这些记录时,磁盘使用会从重新分区主题中变得非常疯狂。根据我们的理解,这些主题在kafka1.0.1和Long. Max中使用标准保留时间(14天?)。这是非常不方便的,因为对于重新分区主题来说,在我们的例子中,每条记录在聚合完成后只读取一次,然后可以删除。
所以我们的问题是,是否有任何方法可以在kafka流中配置一个设置,在记录被处理后清除它们?我已经看到有一些方法可以用purgeDataBy()(https://issues.apache.org/jira/browse/KAFKA-4586)来做到这一点。
作为参考,部分应用程序中的一些尺寸:
表1(更新日志,紧凑~2GB)--
(这是我的第一个堆栈溢出问题,因此感谢任何反馈,提前感谢!)
Kafka Streams使用purgeDataBy()
API因为1.1
发布:https://issues.apache.org/jira/browse/KAFKA-6150
您不需要启用它(也不能禁用它)。