# 数据倾斜 > 数据分配不均衡 - 根本原因: - 一:数据本身就是倾斜的,某种数据过多(无法干预) - 二:分配规则: - MapReduce/Hive:默认分区的规则Key哈希取余之后得到Reduce个数 - 情况: - 两个reduce,所有的哈希取余都为0 - 一个reduce处理完所有数据 - 解决: - MapReduce:设计java代码 - 方案一:给key添加随机数 - 方案二:通过MapReduce的分区规则,随机分区 - 再使用一个MapReduce来处理上一步的结果,做最终的聚合 - 方案三:开启MapReduce中的Combiner - Hive/SQL: > SQL调优的本质就是把不需要参加join的数据过滤掉