前置知识
数据倾斜一般包括两种情况
- 一种是唯一值非常少,极少数值有非常多的记录值(唯一值少于几千)
- 一种是唯一值比较多,这个字段的某些值有远远多于其他值的记录数,但是它的占比也小于百分之一或千分之一
本文中的情况属于第一种
参考链接(数据倾斜原理及解决方案)
sql类型
- spark-sql
根本问题
- join关联条件有大量重复值
解决方案
- 对有大量重复值的表进行先聚合后关联
具体情况
- 在做一个取数需求的时候,在sql中一开始采取先把所有子查询明细联合,最外层select再进行聚合计算的策略。
- 代码逻辑大致如下
select
items.item_id,
count(distinct