回复:滑动窗口数据存储多份问题

2020-07-14 文章 Jimmy Zhang
Hi! 好的,非常感谢! 很期待你接下来的回复。 | Best, Jimmy | Signature is customized by Netease Mail Master 在2020年07月13日 19:58,Congxian Qiu 写道: Hi 从 HeapListState#add 这里看是的,我跟了一个 WindowOperator 到最终 HeapListState 的逻辑,这里确实是只有一份数据,没有拷贝。这个东西的实现可能是因为性能好,我尝试确认下这个原因,多谢你的提问。 Best, Congxian Jimmy Zhang <13669299...@163

回复: 滑动窗口数据存储多份问题

2020-07-11 文章 Jimmy Zhang
Hi,all! 从WindowOperator.java的processElement方法跟进去,使用windowState.add(element.getValue());添加数据,这里面找到add方法的HeapListState类的实现, @Override public void add(V value) { Preconditions.checkNotNull(value, "You cannot add null to a ListState."); final N namespace = currentNamespace; final StateTable> m

回复:滑动窗口数据存储多份问题

2020-07-11 文章 Jimmy Zhang
嗯嗯,之前没有选择回复全部,不好意思。 我看源码关于RocksDB这块确实是需要序列化的,所以肯定是多份保存,如果状态后端是heap呢,也是一样的吗?从我测试内存来看,感觉也是多份,只是heapliststate那个类给了我一些困惑😦 在2020年07月11日 16:23,Congxian Qiu 写道: Hi 每个窗口都是一个单独的 state,至于你认为的不同 state 仅保持引用是不对的。这个你可以使用 RocksDBStateBackend 来考虑,RocksDBStateBackend 中会把 state 序列化成 bytes,然后写到 RocksDB 中,就是每个 S