如果删除了某些状态描述符,Flink 如何在 checkpoint/savepoint 中保存状态

How does Flink save state in checkpoint/savepoint if some of state descriptor is removed

如果我有一个带有 2 个键状态的简单 flink 作业,比如 State1 和 State2。

作业配置了 rocksDB 后端。每个州拥有 10GB 数据。

如果我更新代码以便不使用其中一个状态(删除状态描述符,并删除相关代码。)。例如State1被删除。

下次flink触发checkpoint或者我手动触发savepoint的时候。 checkpoint/savepoint 是否仍保留 State1 的数据?

如果您使用带有增量检查点的 RocksDB,那么过时状态描述符的状态将保留在检查点中,直到它被压缩掉(但可以忽略)。对于任何完整快照,State1 都不会保留。

使用 RocksDB,过期状态最终会被 RocksDB 压实过滤器移除。在那之前,如果 StateTtlConfig.StateVisibility.NeverReturnExpired 设置状态后端 returns null 代替过期值。

Documentation on State TTL