0
点赞
收藏
分享

微信扫一扫

Flink中热点key解决方法

吓死我了_1799 2022-02-25 阅读 212

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;

3. 参考资料

Flink面试常见问题(实战)_u011250186的博客-CSDN博客_flink问题

举报

相关推荐

0 条评论