【问题标题】:Flink and RocksDB - List State Larger Than Main Memory?Flink 和 RocksDB - 列表状态大于主内存?
【发布时间】:2019-12-05 12:07:02
【问题描述】:

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

【问题讨论】:

标签: java apache-flink rocksdb


【解决方案1】:

如果调用 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);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    相关资源
    最近更新 更多