原文链接:https://blog.youkuaiyun.com/IT_Lee_J_H/article/details/88641894
这里阐述一下Flink中 window间的数据倾斜的解决思路,不做代码展现。
场景:
分项目统计某个时间粒度的 pv 数据
数据情况:
每个项目的数据量不同,某个项目的数据量很大,导致这个项目的窗口中的数据很大,发生倾斜。
解决思路:
思路一:
针对window原始方式中在窗口触发前,是以数据积攒的方式进行的。所以针对这种方式可以在window后跟一个reduce方法,在窗口触发前采用该方法进行聚合操作(类似于MapReduce 中 map端combiner预处理思路)。如使用 flink 的 aggregate 算子,不推荐使用 apply。
思路二:
思路一处理后仍有倾斜问题,或者也可以直接采用思路二进行优化、处理。
大致思路:
将key进行扩展,扩展成自定义的负载数,即,将原始的key封装后新的带负载数的key,进行逻辑处理,然后再对新key的计算
结果进行聚合,聚合成原始逻辑的结果。
具体实现思路:
1.人为查看具体的倾斜的(数据量大的项目码,例如Code1)
2.将原始的数据元组中keyby分组的键进行扩展,扩展指定的负载个数
例如:
优化前:
数据元组:(项目码,1)
如,(code
Flink窗口数据倾斜解决方案

本文探讨了在Flink中处理窗口数据倾斜的方法,通过扩展key负载和预聚合策略,有效解决了因某些key数据量过大导致的处理瓶颈,提升了流处理效率。
最低0.47元/天 解锁文章
831

被折叠的 条评论
为什么被折叠?



