??
" state backend
Heap state backend
?? Java ??RocksDB state backend
list map 8 "
考虑下面的场景:
KeyBy userId, 把该 userId 所用的相关记录存起来放在 ListState 中
private transient ListState list;
@Override
public void processElement(Tuple2 value, Context ctx,
Collector out)
throws Exception {
list.add(value.f1);
}
TTL 设为 7 天。
如果这个 userId 超过 7 天没有任何消息,那这个 userId 相应的 ListState 会被删除。
但如果这
Hi
ListState 中的 value 是一个整体,所以一次性会取回来,现在 RocksDBMapStat 中有一些操作
(iterator/entries/values 等)是使用 next 方法加载的。
Best,
Congxian
蒋佳成(Jiacheng Jiang) <920334...@qq.com> 于2020年7月21日周二 上午9:28写道:
> 大家好:
>
> 我发现RocksDBListState#get方法是一次性把数据全加载到内存中,如果list太大这样会不会造成内存溢出。可不可以在next方法中才加载数据?
??RocksDBListState#get??list??next??
019年7月8日周一 上午10:46写道:
> Hi all,
> 我在使用listState的时候,通过get获取listState以后,想删除里面的元素。类似这样:
> Iterable it = listState.get();
> Iterator itor = it.iterator();
> ...
> itor.remove();
> 如果选用Memory或者Fs StateBackend,ListState里的元素可以正确删除
> 如果选用RocksDB
> StateBackend,ListState里的元素不能删除,再
Hi all,
我在使用listState的时候,通过get获取listState以后,想删除里面的元素。类似这样:
Iterable it = listState.get();
Iterator itor = it.iterator();
...
itor.remove();
如果选用Memory或者Fs StateBackend,ListState里的元素可以正确删除
如果选用RocksDB StateBackend,ListState里的元素不能删除,再调用update(list)才能将删除了元素的list更新到状态里面
我理解这是因为RocksDB
StateBackend操