Flink 中的数据倾斜(Data Skew)通常表现为部分 Subtask 处理的数据量远超其他 Subtask,导致整个作业的进度被这几个“热点”拖慢,出现反压(Backpressure)、Checkpoint 超时甚至 OOM(内存溢出)。 处理数据倾斜通常需要结合业务场景(是聚合还是 Join?)和API 类型(DataStream 还是 SQL/Table)来选择方案。以下是系统性的处理策略: --- 一、 诊断:如何确认发生了数据倾斜? 在动手解决前,先通过 Flink Web UI 确认: 1. Subtask 层面:查看某个算子(Operator)的各个 Subtask 的 或 。如果有的几千万,有的只有几百,那就是倾斜。 2. 反压情况:查看 Backpressure 面板,倾斜节点的下游通常反压为 High,而其他并行度正常。 3. Checkpoint:Checkpoint 时间变长,且经常因为个别 Subtask 未完成而失败。 --- 二、 核心解决方案 1. 过滤异常数据(最简单的方案) 场景:很多时候倾斜是因为 Key 为 、空字符串或某些无意义的默...