Apache flink Flink应用程序';s检查点的规模不断增长

Apache flink Flink应用程序';s检查点的规模不断增长,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我有这样一条管道: env.addSource(kafkaConsumer, name_source) .keyBy { value -> value.f0 } .window(EventTimeSessionWindows.withGap(Time.seconds(2))) .process(MyProcessor()) .addSink(kafkaProducer)

我有这样一条管道:

env.addSource(kafkaConsumer, name_source)
            .keyBy { value -> value.f0 }
            .window(EventTimeSessionWindows.withGap(Time.seconds(2)))
            .process(MyProcessor())
            .addSink(kafkaProducer)
            
密钥在当前正在处理的数据中保证是唯一的。 因此,我希望状态大小不会增长超过2秒的数据

然而,我注意到在过去的一天里,州的规模一直在稳步增长(自从应用程序部署以来)

这是弗林克的一只虫子吗


在aws kinesis数据分析中使用flink 1.11.2。

kinesis数据分析始终使用RocksDB作为其状态后端。使用RocksDB,死区不会立即清理,它只是用墓碑标记,然后被压实。我不确定KDA是如何配置RocksDB压缩的,但通常是在某个级别达到某个大小时完成的——我怀疑您的状态大小仍然很小,以至于没有进行压缩


对于增量检查点(KDA就是这么做的),检查点是通过复制RocksDB的SST文件来完成的——在您的例子中,这些文件可能充满了过时的数据。如果您让它运行足够长的时间,那么在压缩完成后,您最终会看到检查点大小的显著下降。

是否可能在同一个密钥上连续出现多个事件?如果一个键继续观察事件,会话将不会关闭,并且该键上的事件将继续在状态中缓冲…否。我们正在用唯一的密钥专门测试这一点,以确保状态不会增长(但它确实增长了…)