开发者社区> 问答> 正文

Apache Flink 1.6.0 - StateTtlConfig和ListState

社区小助手 2018-12-11 15:50:06 888

我正在使用Apache Flink 1.6.0实现概念验证流处理系统,并存储一个按键分区的接收事件列表ListState。(不要担心我为什么这样做,只是在这里和我一起工作。)我StateTtlConfig有一套相应的ListStateDescriptor。 根据文件:

“所有状态集合类型都支持每个条目的TTL。这意味着列表元素和映射条目将独立到期。”
“目前,过期值只有在明确读出时才会被删除,例如通过调用ValueState.value()。”
问题1

以下哪一项构成了对以下内容的解读ListState:

请求迭代器但不使用它 - myListState.get();。
实际上使用迭代器 - for (MyItem i : myListState.get()) { ... }
问题2

“每次进入TTL” 究竟意味着什么?具体来说,我要问的是以下内容:

假设我有一个特定的实例ListState。描述符的TTL为10秒。我插入一个'a'。两秒钟后,我插入'b'。九秒后我插入'c'。如果我迭代这个ListState,将返回哪些项目?

换一种说法:

ListState 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()) { ... }

存储 Apache 流计算 C++
分享到
取消 提交回答
全部回答(1)
  • 社区小助手
    2019-07-17 23:19:48

    “per-entry TTL”表示超时应用于单个条目而不是整个集合。对于你的例子,假设在读取10秒后,因为插入a将迭代b并且c。a在这种情况下将被修改。

    0 0
+ 订阅

大数据计算实践乐园,近距离学习前沿技术

推荐文章
相似问题
推荐课程