加载中...

数据倾斜(Data Skew)指分布式计算中数据按键分发后在各节点或任务间分布严重不均的现象:绝大多数任务很快完成,少数处理「热点键」的任务却承担了大部分数据量,成为整个作业的瓶颈,是 Spark、Hive、Flink 等框架调优中最常见的问题。
根本原因是按键哈希分发的前提——键分布均匀——在真实业务中经常不成立:空值与默认值集中、头部用户或热门商品的记录量远超长尾、维表关联键基数过低等。倾斜常发生在 Shuffle 环节的 Join、Group By 与去重计算中,表现为个别 Task 运行时间远超中位数,甚至内存溢出。
常用手段包括:过滤或单独处理空值与异常键;加盐(给热点键拼接随机前缀,两阶段聚合);大小表 Join 改为广播 Join 避免 Shuffle;热点键拆分后分别关联再合并;提高并行度或使用框架内建能力,如 Spark 3 的 AQE 自适应倾斜 Join 拆分、Hive 的 skew join 优化参数。
数据倾斜无法一劳永逸消除,识别热点键并针对性改写逻辑仍是数据工程师的基本功。

登录 后参与讨论
暂无讨论,来发表第一条评论吧