Kafka KTable:我们如何安排实现

时间:2018-05-13 00:36:51

标签: apache-kafka apache-kafka-streams

有没有办法设置一个时间表,在该时间表中,KTable中的数据应该保存(.to())到主题中?基本上让KTable累积所有数据,并在特定时间将数据写入主题。

1 个答案:

答案 0 :(得分:1)

没有明确的控制,但是,KTable在内部缓存下游数据以压迫对同一密钥的连续更新(cf https://kafka.apache.org/11/documentation/streams/developer-guide/memory-mgmt.htmlhttps://www.confluent.io/blog/watermarks-tables-event-time-dataflow-model/)。同时,每次Kafka Streams提交时都会刷新此缓存。

因此,如果缓存足够大以容纳所有数据,则可以通过相应地配置commit.interval.ms来模仿所需的行为。请注意,这可能只是所需行为的近似值。

作为替代方案,您可以通过Punctuations构建自定义解决方案。我们的想法是不通过KTable#to()运算符写入任何数据,而是使用标点符号计划扫描整个商店以将数据写入主题。这种方法非常先进,而且有些“hacky"而不是一个干净的解决方案。