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