1. 从业务上将key打散

2. 从flink技术上考虑优化
2.1 开启minibatch
开发minibatch:可以较少状态的读取次数,提高处理数据性能,从而缓解热点key带来的压力。
2.2 开启两阶段聚合
首先把分组的 key 打散,比如加随机后缀;
对打散后的数据进行聚合;
把打散的 key 还原为真正的 key;
二次 KeyBy 进行结果统计,然后输出。
2.3 GroupBy + Aggregation 分组聚合热点问题
将SQL 拆成了内外两层,第一层通过随机打散 100 份的方式减少数据热点,当然这个打散的方式可以根据业务灵活指定。
select date,
type,
sum(pv) as pv
from(
select
date,
type,
sum(count) as pv
from table
group by
date,
type,
floor(rand()*100) --随机打散成100份
)
group by
date,
type;
本文探讨了如何解决Flink中的热点key问题,从业务层面的key打散到技术层面的开启minibatch和两阶段聚合,以及通过GroupBy + Aggregation进行分组聚合优化,提供了缓解数据热点的方法。
732

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



