gpt4 book ai didi

apache-flink - 从 ListState 中删除选择项

转载 作者:行者123 更新时间:2023-12-04 05:20:25 26 4
gpt4 key购买 nike

我正在实现具有大状态(可能不适合内存)的自定义运算符。为此,我正在尝试使用 ListState。
我在用

checkpointedState = context.getOperatorStateStore().getListState(descriptor);

https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/stream/state.html#using-managed-operator-state 中所述

上述链接中的 snapshotState() 的实现清除了 checkpointedState,然后将内存数据结构中的元素添加到 checkpointedState。

相反,我需要在 snapshotState() 中使用类似下面的内容:
  • 删除 checkpointedState 的特定条目而不是 clear()。
  • 将内存数据结构中的新元素添加到 checkpointedState。

  • 有没有办法有选择地从 ListState 中删除项目?

    最佳答案

    不,从 ListState 中删除特定元素不幸的是不可能。
    如果你想保留特定的列表条目,你必须在清除 ListState 之前将它们提取到一个集合中。然后再次重新插入它们。

    在您引用的示例中,所有状态对象都存储在 bufferedElements 中。变量并且只插入到 ListState当检查点完成时。这意味着,完整的操作符状态总是存储在 bufferedElements 中的 JVM 堆中。 .您也可以将运算符(operator)状态的一部分存储在 ListState 中。 (而不是将它保存在堆上)但是访问单个元素会非常昂贵,因为您必须遍历迭代器。

    关于apache-flink - 从 ListState 中删除选择项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47386974/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com