Kafka Streams窗口存储保留重复项

时间:2019-04-10 03:16:35

标签: apache-kafka-streams rocksdb

文档尚不清楚。我何时要将保留重复项设置为false / true。这是做什么用的?它是针对RocksDB中的特定内容吗?

https://kafka.apache.org/21/javadoc/org/apache/kafka/streams/state/Stores.html#persistentWindowStore-java.lang.String-java.time.Duration-java.time.Duration-boolean-

在流中浏览内部代码似乎是用来设置一些序列号的?

RocksDBWindowStore.java

private void maybeUpdateSeqnumForDups() {
    if (this.retainDuplicates) {
      this.seqnum = this.seqnum + 1 & 2147483647;
    }

1 个答案:

答案 0 :(得分:0)

好吧,顾名思义,如果要使用相同的键存储多行,则可以启用存储重复项。对于窗口存储,键由记录键和窗口开始时间戳组成。

Kafka Streams使用此功能进行KStream-KStream连接。对于这种情况,每个输入记录都存储在商店中其自己的窗口中(使用记录时间戳作为窗口开始时间戳)。由于可能存在具有相同键和相同时间戳的多个记录,因此需要启用此标志来计算正确的联接。否则,联接结果可能不完整。