开发者社区> 问答> 正文

请问一下大家,有没有遇到过大窗口,小slide的情况,比如说1个月大的窗口,1分钟的slide(因为希望对一个月内的数据每分钟做输出),这样一条数据会分布在非常多的窗口里面,内存消耗很大。不知道这种问题怎么解?

转自钉钉群21789141:
请问一下大家,有没有遇到过大窗口,小slide的情况,比如说1个月大的窗口,1分钟的slide(因为希望对一个月内的数据每分钟做输出),这样一条数据会分布在非常多的窗口里面,内存消耗很大。不知道这种问题怎么解?

展开
收起
赵慧@ApacheFlink中文社区 2018-10-10 11:46:05 1770 0
1 条回答
写回答
取消 提交回答
  • 仙隐:这个和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

    2019-07-17 23:08:22
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
内存取证与IaaS云平台恶意行 为的安全监控 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载
低代码开发师(初级)实战教程 立即下载