转自钉钉群21789141:
请问一下大家,有没有遇到过大窗口,小slide的情况,比如说1个月大的窗口,1分钟的slide(因为希望对一个月内的数据每分钟做输出),这样一条数据会分布在非常多的窗口里面,内存消耗很大。不知道这种问题怎么解?
仙隐:这个和window的实现有关,如果是通用的slide的window,要支持update和retract操作,那么只能是按照assign window+window merge这样的流程去做。你说的内存问题是可以优化的,原始数据可在state中存一份,然后window id result单独存在一个state中。如果operator是可增量的,那么state的大小就是一个月的数据量+window id的result。
但如果你不需要支持late event且operator本身可增量的话,实现就简单了,只需要assign一个window,每一分钟聚合计算一个结果,然后在window的result中把最新1分钟的结果做update,再把最早淘汰一分钟的结果做retract,state不会太大。
问:如果在操作中缓存了大量的内存数据,Flink会做类似将内存数据溢出到磁盘的操作么?
答:有的,选rocksdb state
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。