3. 事实表关联维表 一般是大小表join 即事实表大维表小 或者 维表大 事实表属于增量数据 比较小 楼主说的情况 事实表很大 维表也很大 大数据处理其实不怕数据量大 而怕分布不均匀  数据倾斜是说事实表中数据有集中分布 情况1:   数据其实比较均匀 但经过hash后 某个分区数据就很多 可以尝试下调整分区数可能有效 虽然大多情况下没用 情况2:   事实表存在长尾效应 头部严重集中 比如淘宝的全体店铺的销售流水表 关联 店铺维表 头部店铺的销量一定是非常大的    对于这种的 可以分开处理   select     t1.*,t2.*   from    (     select * from fact_table where id in (1,2,3) -- 这三家店铺是头部单独处理    )t1    left join     (     select * from dim_table where id in (1,2,3) -- 此时维表就很小了 可以用mapjoin    )t2 on t1.id = t2.id   union all   select     t1.*,t2.*   from    (     select * from fact_table where id not in (1,2,3)    )t1    left join     (     select * from dim_table where id not in (1,2,3)   )t2 on t1.id = t2.id; 情况3:   数据量相当大 且不止是头部 头身都很大 只有少数数据比较少  想象的场景是物联网中 某个机具当天的心跳信息 关联 机具的基础信息 几乎每个机具的心跳信息都有上千万条  1.维表能不能先过滤 可能维表1kw条 但关联用到的只有100w 转为大小表join    select * from dim_table  where id in (select id from fact_table group by id)  2.如果两个表都很大 那不是数据倾斜 而是数据堆积 每个任务处理时间都很长     这种的不要以天级别做join 而是小时级别 每一个小时做一次 到时候如果再数据倾斜再考虑上面的方法  #数仓开发#