据我所知,rocksdb数据存储在rocksdb示例的堆外或磁盘上,直到数据在flink的rocksdbstate类中反序列化。是否可以有一个大于当前java堆大小/堆外大小的列表状态?从rocksdbliststate.java中的代码来看,它似乎试图一次反序列化整个列表。
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); } }
1条答案
按热度按时间nwo49xxi1#
如果调用liststate.add(object-in),它只反序列化当前输入对象,而不是liststate中的所有元素