我们有一个约有5000万条记录的kafka实例,每天约有10万次输入,因此在kafka世界中没有什么疯狂的。当我们想使用我们更复杂的流应用程序之一(具有许多不同的聚合步骤)来重新处理这些记录时,磁盘使用率从重新分区主题中变得非常疯狂。根据我们的了解,这些主题在kafka-streams 1.0.1和2.1.1中的Long.Max中使用标准保留时间(14天?)。这非常不方便,因为对于分区主题,在我们的例子中,每条记录在聚合完成后只能读取一次,之后可以删除。
所以我们的问题是,是否有任何方法可以在kafka流中配置一个设置,以便在处理记录后清除记录?我已经看到可以使用purgeDataBefore()(https://issues.apache.org/jira/browse/KAFKA-4586)来实现此目的。
作为参考,部分应用中有一些尺寸:
表1 (更改日志,紧凑〜2GB)->更改密钥和聚合(分区〜14GB)-> 表2 (更改日志,删除, 14KB)->更改密钥和聚合(分区21GB)-> 表3 (更改日志,精巧版,0.5GB)
(这是我的第一个堆栈溢出问题,因此,感谢您提供任何反馈,谢谢!)
答案 0 :(得分:0)
自purgeDataBefore()
发布以来,Kafka Streams使用1.1
API:https://issues.apache.org/jira/browse/KAFKA-6150
您不需要启用它(也不能禁用它)。