Flink流式数据倾斜

 1. 流式数据倾斜

流式处理的数据倾斜和 Spark 的离线或者微批处理都是某一个 SubTask 数据过多这种数据不均匀导致的,但是因为流式处理的特性其中又有些许不同

2. 如何解决

2.1 窗口有界流倾斜

 窗口操作类似Spark的微批处理,直接两阶段聚合的方式来解决就可以

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;

2.2 数据本身不均匀

KeyBy 前数据已经不均匀了,可能是Topic 每个分区的数据不一致(较为少见),或者上游task处理以后导致的数据不均匀,导致下游operate chains的某个task压力很大

这种可以加一个随机数 redistributiing 一下之类打散

2.3 keyby类

离线的加盐双重聚合方式,把数据打散

开启minibatch 和 global,牺牲时效性,减少输出数据量

需要注意:

和离线不同,加盐在部分场景并不能解决问题

首先加盐后会多一次shuffle,但是流式处理是每条数据来了之后立即处理,所以对于group场景加盐是无效的

对于group 场景,flink会输出回撤流,数据量不仅不会减少,反而会导致数据更多,但是如果不使用回撤流会导致数据重复

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

orange大数据技术探索者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值