有没有办法设置一个时间表,在该时间表中,KTable中的数据应该保存(.to())到主题中?基本上让KTable累积所有数据,并在特定时间将数据写入主题。
答案 0 :(得分:1)
没有明确的控制,但是,KTable在内部缓存下游数据以压迫对同一密钥的连续更新(cf https://kafka.apache.org/11/documentation/streams/developer-guide/memory-mgmt.html和https://www.confluent.io/blog/watermarks-tables-event-time-dataflow-model/)。同时,每次Kafka Streams提交时都会刷新此缓存。
因此,如果缓存足够大以容纳所有数据,则可以通过相应地配置commit.interval.ms
来模仿所需的行为。请注意,这可能只是所需行为的近似值。
作为替代方案,您可以通过Punctuations
构建自定义解决方案。我们的想法是不通过KTable#to()
运算符写入任何数据,而是使用标点符号计划扫描整个商店以将数据写入主题。这种方法非常先进,而且有些“hacky"而不是一个干净的解决方案。