sbymdh2003 2022-06-02 14:48 采纳率: 0%
浏览 30

hive 大表 小表 顺序

问题遇到的现象和发生背景

小表关联大表的性能问题,目前我一张大表,10亿左右,用日期分区,每个分区大概是5000W。有张很小的表,表数据是变动的。大概只有几条。

问题相关代码,请勿粘贴截图

select dt,count(1)
from 大表 t
join 小表 t1
on t.dt=t1.dt
group by dt

使用上面的方式查询非常的慢,我也改使用left semi join和mapjon、in、exists性能都很差。
如果改成

select dt,count(1)
from 大表 t
where t.dt in(日期1,日期2)
group by dt
这种方式很快。
请问有什么好的办法提升性能。因为日期参数不是固定的,只能从小表里面取

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 笑看风云路 领域专家: 大数据技术领域 2022-06-02 15:16
    关注

    上面的方式走的是全表扫描
    下面的添加了where子句,走的是分区查询
    解决办法:
    select dt,count(1)
    from 大表 t
    where t.dt in (select dt from 小表)
    group by dt

    评论

报告相同问题?

问题事件

  • 创建了问题 6月2日