繁体   English   中英

Flink 和 RocksDB - 列出大于主内存的状态?

[英]Flink and RocksDB - List State Larger Than Main Memory?

据我了解,RocksDB 数据在堆外存储在 RocksDB 实例或磁盘上,直到数据在 Flink 中的 RocksDBState 类中反序列化。 是否有可能有一个大于当前 Java 堆大小/堆外大小的单个列表状态? 从 RocksDBListState.java 中的代码来看,它似乎试图一次反序列化整个列表。

如果你调用 ListState.add(Object in),它只会反序列化当前输入的 Object,而不是 ListState 中的所有元素

public void add(V value) {
    Preconditions.checkNotNull(value, "You cannot add null to a ListState.");

    try {
        this.writeCurrentKeyWithGroupAndNamespace();
        byte[] key = this.dataOutputView.getCopyOfBuffer();
        this.dataOutputView.clear();
        this.elementSerializer.serialize(value, this.dataOutputView);
        this.backend.db.merge(this.columnFamily, this.writeOptions, key, this.dataOutputView.getCopyOfBuffer());
    } catch (Exception var3) {
        throw new FlinkRuntimeException("Error while adding data to RocksDB", var3);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM