会删除。引用官网的一段话:
"状态上次的修改时间会和数据一起保存在 state backend 中,因此开启该特性会增加状态数据的存储。 Heap state backend 会额外存储一个包括用户状态以及时间戳的 Java 对象,RocksDB state backend 会在每个状态值(list 或者 map 的每个元素)序列化后增加 8 个字节。"
可参考:
https://github.com/apache/flink/blob/master/docs/dev/stream/state/state.zh.mdby wulei
------------------ 原始邮件 ------------------
发件人: "user-zh" <
[hidden email]>;
发送时间: 2020年9月18日(星期五) 上午10:49
收件人: "user-zh"<
[hidden email]>;
主题: ListState 设置 TTL 会在 list 中删除之前的记录吗
考虑下面的场景:
KeyBy userId, 把该 userId 所用的相关记录存起来放在 ListState 中
private transient ListState<String> list;
@Override
public void processElement(Tuple2<String, String> value, Context ctx, Collector<String> out)
throws Exception {
list.add(value.f1);
}
TTL 设为 7 天。
如果这个 userId 超过 7 天没有任何消息,那这个 userId 相应的 ListState 会被删除。
但如果这 userId 一直持续不断的有消息过来,那 7 天之前 被 add 到 list 的记录会不会被删除呢?
谢谢,
王磊
[hidden email]