我们有一个Kafka示例,有大约5000万条记录,每天大约有10万条输入,所以在Kafka世界里没有什么疯狂的。当我们想用一个更复杂的流应用程序(有许多不同的聚合步骤)重新处理这些记录时,磁盘的使用会因为重新分区主题而变得非常疯狂。根据我们的理解,这些主题使用kafka streams 1.0.1中的标准保留时间(14天?)和2.1.1中的long.max。这是非常不方便的,因为对于重分区主题,在我们的例子中,每个记录只在聚合完成时读取一次,然后就可以删除。
因此,我们的问题是,是否有任何方法可以在kafka流中配置一个设置,在记录被处理后清除记录?我看到有一些方法可以通过purgedatabefore()实现这一点(https://issues.apache.org/jira/browse/kafka-4586).
作为参考,应用程序部分中的一些尺寸:
表1(changelog,compact~2gb)-->更改键和聚合(重分区~14gb)-->表2(changelog,delete,14kb)-->更改键和聚合(重分区21gb)-->表3(changelog,compact,0.5gb)
(这是我的第一个堆栈溢出问题,感谢您的反馈,提前感谢!)
1条答案
按热度按时间c3frrgcw1#
Kafka使用
purgeDataBefore()
api自1.1
发布:https://issues.apache.org/jira/browse/kafka-6150您不需要启用它(也不能禁用它)。