首页 文章

Apache Kafka流式传输KTable更改日志

提问于
浏览
0

我正在使用Apache Kafka流来对Kafka主题消耗的数据进行聚合 . 然后将聚合序列化为另一个主题,本身消耗并将结果存储在DB中 . 我想是非常经典的用例 .

聚合调用的结果是创建由Kafka更改日志“主题”备份的KTable .

这比在实践中更复杂,但是假设它存储给定键的事件的计数和总和(计算平均值):

KTable<String, Record> countAndSum = groupedByKeyStream.aggregate(...)

该更改日志“主题”似乎没有设置保留期限(我没有看到它“过期”与我的全局保留设置的其他主题相反) .

这实际上是好的/必要的,因为这可以避免在未来事件带有相同密钥时丢失我的聚合状态 .

但是从长远来看,这意味着这个更改日志会永远增长(随着更多密钥进入)?而且我可能有很多键(我的聚合并不像count / sum那么小) .

由于我有办法知道我不会再获得特定键的事件(某些事件被标记为“最终”),我是否有办法剥离更改日志的这些特定键的聚合状态以避免让它永远增长,因为我不再需要它们,可能会稍微延迟“只是”以防万一?

或者也许有一种方法可以完全不同于Kafka流媒体以避免这个“问题”?

1 回答

  • 1

    是:更改日志主题配置了日志压缩,而不是保留时间 . 如果您收到"final"记录,则您的聚合可以返回 null 作为聚合结果 . 这将从本地RocksDB商店以及基础更改日志主题中删除它 .

相关问题