Flink流式数据倾斜

 1. 流式数据倾斜

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

2. 如何解决

2.1 窗口有界流倾斜

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

select date,type,sum(pv) as pv
from(selectdate,type,sum(count) as pvfrom tablegroup bydate,type,floor(rand()*100) --随机打散成100份 )group by date,type;

2.2 数据本身不均匀

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

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

2.3 keyby类

加盐

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