Events ApacheFlink 1.6.0-StateTlConfig和ListState
我正在使用ApacheFlink 1.6.0实现一个概念验证流处理系统,并在Events ApacheFlink 1.6.0-StateTlConfig和ListState,events,apache-flink,ttl,stateful,Events,Apache Flink,Ttl,Stateful,我正在使用ApacheFlink 1.6.0实现一个概念验证流处理系统,并在ListState中存储一个按键划分的接收事件列表。(不要担心我为什么要这样做,在这里与我一起工作。)我在相应的列表statedDescriptor上设置了一个StateTtlConfig: “所有状态集合类型都支持每项TTL。这意味着列表元素和映射项将独立过期。” 当前,过期值只有在显式读取时才会被删除,例如通过调用ValueState.value() 问题1 以下哪项构成了对列表状态的读取: 请求迭代器但不使用它-m
ListState
中存储一个按键划分的接收事件列表。(不要担心我为什么要这样做,在这里与我一起工作。)我在相应的列表statedDescriptor
上设置了一个StateTtlConfig
:
ValueState.value()
myListState.get()代码>
for(MyItem i:myListState.get()){…}
ListState
实例。描述符的TTL为10秒。我插入一个'a'
。两秒钟后,我插入'b'
。九秒钟后,我插入了'c'
。如果我迭代此列表状态
,将返回哪些项目
换言之:
ListState<Character> ls = getRuntimeContext().getListState(myDescriptor);
ls.add('a');
// ...two seconds later...
ls.add('b');
// ...nine seconds later...
ls.add('c');
// Does this iterate over 'a', 'b', 'c'
// or just 'b' and 'c'?
for (Character myChar : ls.get()) { ... }
ListState ls=getRuntimeContext().getListState(myDescriptor);
ls.加入(‘a’);
//…两秒钟后。。。
ls.加入(‘b’);
//…九秒钟后。。。
ls.加入(‘c’);
//这是否在“a”、“b”、“c”上迭代
//或者只是“b”和“c”?
对于(字符myChar:ls.get()){…}
答案1
答案是1。对于ListState,对myListState.get()进行修剪代码>
答案2
“每个条目TTL”表示超时应用于单个条目,而不是整个集合。例如,假设在插入a后经过10秒读取时,它将在b
和c
上迭代<代码>在这种情况下,将删除一个