Hive之——Hive SQL优化

一、Hive优化目标

在有限的资源下,提高执行效率

二、Hive执行

HQL——> Job——> Map/Reduce

三、执行计划

查看执行计划

explain [extended] hql

四、Hive表优化

1、分区

  • 静态分区
  • 动态分区
 
  1. set hive.exec.dynamic.partition=true;

  2. set hive.exec.dynamic.partition.mode=nonstrict;

2、分桶

 
  1. set hive.enforce.bucketing=true;

  2. set hive.enforce.sorting=true;

3、数据

相同数据尽量聚集在一起

五、Hive查询操作优化

1、join优化

 
  1. hive.optimize.skewjoin=true;如果是join过程中出现倾斜 应该设置为true

  2. set hive.skewjoin.key=100000; 这个是join的键对应的记录条数,超过这个值则会进行优化

2、mapjoin

 
  1. set hive.auto.convert.join=true;

  2. hive.mapjoin.smalltable.filesize默认值是25mb

  3. select /*+mapjoin(A)*/f.a, f.b from A t join B f on (f.a=t.a)

3、mapjoin的使用场景

  • 关联操作中有一张表非常小
  • 不等值的连接操作

4、bucket join

  • 两个表以相同方式划分桶
  • 两个表的桶个数是倍数关系
 
  1. create table order(cid int, price float) clustered by(cid) into 32 buckets;

  2. create table customer(id int, first string) clustered by(id) into 32 buckets;

  3. select

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值