flink和rocksdb-list状态是否大于主内存?

kwvwclae  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(446)

据我所知,rocksdb数据存储在rocksdb示例的堆外或磁盘上,直到数据在flink的rocksdbstate类中反序列化。是否可以有一个大于当前java堆大小/堆外大小的列表状态?从rocksdbliststate.java中的代码来看,它似乎试图一次反序列化整个列表。

nwo49xxi

nwo49xxi1#

如果调用liststate.add(object-in),它只反序列化当前输入对象,而不是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);
    }
}

相关问题