仅从SQL和表及参数层面简单总结22种Hive基础调优方式

1、SQL和table层面

1、column pruning(列裁剪)
    查询的时候需要哪些列,直接查这些列即可,不要全局查询。

2、partition pruning(分区裁剪)          
    查询的时候需要哪些分区,直接查这些分区即可,不要全局查询。

3、合理利用中间结果集
    SQL1包含:select a,b,c from xxx group ...   
    SQL2包含:select a,b,d from xxx group ....
    
    我们可以在sql1和sql2执行之前先创建临时表
            create temporary table tmp_1 as select a,b,c,dfrom xxx group ....
    然后在临时表的基础上执行SQL1和SQL2。

4、对表或分区进行分桶(大表join大表)
    2张表对于连接的字段进行分桶。
    处理左边表内某个桶的Mapper他知道右边表内对应的行在对应的桶内。
    因此Mapper只需要获取那个桶,然后取得数据进行JOIN 。 

5、多个join尽可能使用相同的连接键
    select t1.a,t2.a,t3.a from t1 
        join t2 on t1.key1=t2.key1 
        join t3 on t2.key1=t3.key1;
        #####连接条件相同,只有一个MR
    select t1.a,t2.a,t3.a from t1 
        join t2 on t1.key1=t2.key1 
        join t3 on t2.key2=t3.key2;
        #####连接条件不同,有两个MR

6、排序优化       
    Order By:在一个reducer上处理所有数据,虽然整体有序的,但不能并发执行,效率低。
    而且只有一个reducer,作业可能跑不出来,而且很可能数据倾斜。
    Sort By:排序操作在多个reducer上执行,整体无序(reducer间)但局部有序(reducer内)。
    Distributed By:按指定字段分发数据到reducer,相同的hash值到同一个reducer。
        我们经常使用distributed by id sort by score,来进行排序。
                相同id会到同一个reducer,各个reducer中通过name来排序。
   
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二百四十九先森

你的打赏是我努力的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值