Spark 数据倾斜(Data Skew)是大数据处理中最常见的问题之一。它的典型表现是:绝大多数 Task 很快执行完,但个别 Task 执行极慢(卡在 99%),或者直接报 OOM(内存溢出)。 解决数据倾斜通常没有“银弹”,需要根据具体的业务场景(是 Join 还是 Aggregation,是 Key 分布不均还是 Null 值过多)选择合适的方案。 以下是 Spark 数据倾斜的 7 种常见解决方案,按从易到难、从通用到特定的顺序排列: --- 1. 利用 Spark 3.x AQE (Adaptive Query Execution) —— 最推荐(躺平方案) 如果你使用的是 Spark 3.0 及以上版本,这是首选方案。 原理:Spark 在运行时收集统计信息,自动检测倾斜的 Partition,并将其拆分成多个小的 Partition 进行处理。 适用场景:几乎所有 SQL/DataFrame 场景。 配置: 2. 调整并行度 (Increase Parallelism) 原理:增加 Shuffle Read Task 的数量,让每个 Task 处理的数据量变少。如...