- 减少使用distinct,用group by 代替
- 查询条件中减少使用条件
- 避免使用select *
- 尽量避免一个SQL包含复杂逻辑,使用中间表来完成复杂的逻辑
- 小表在前,大表灾后,因为jion左边的表会加载到内存,使用map join代替join
- 空值或无意义值
- 原因:如果缺失项很多,在做join时这些空值会非常集中,拖累进度
- 解决方案:若不需要空值,提前过滤掉;若需要,将空值用随机的方式打散
- 不同类型关联产生的数据倾斜
- 如果join的两个key数据类型不同,则需要转换为同一类型,因为默认的hash会按照int型发送到reduce上,会导致非int类型的记录全部发送到一个reduce上面。
- 聚合时某个key 的数据较多
- 加入随机数进行聚合。
1.https://blog.csdn.net/qq_24271537/article/details/113216807)



