hivesql优化

对执行很慢的hivesql进行优化:列裁剪和分区裁剪列裁剪就是在查询时只读取需要的列,分区裁剪就是只读取需要的分区越早过滤越好where --减少下游处理的数据量sort by代替order byorder by将结果按某字段全局排序,这会导致所有map端数据都进入一个reducer中ort by,那么还是会视情况启动多个reducer进行排序,并且保证每个reducer内局部有序, 为了控制map端数据分配到reducer的key,往往还要配合distribut...
摘要由CSDN通过智能技术生成

一.普通场景hivesql优化

1. 列裁剪

由于数仓底层存储大都采用列式存储,如ORC/PARQUET,所以可以采用列裁剪的方式减少扫描的字段。

2. 分区裁剪

即查询数据表时增加分区的条件,数仓通常是集团级的数据存储,数据量非常大,所以大多都采用分区,加速数据统计效率,所以分区裁剪必不可少

越早过滤越好where  --  减少下游处理的数据量

数据过滤

让关联的2张表数据变少

select t1.dim1,t1.measure1,t2.measure2
from 
     (select dim1,measure1 from a where dt = '2019-01-01') t1
join (select dim1,measure2 from b where dt = '2019-01-01') t2 on t1.dim1 = t2.dim1

 

去重优化

一般禁止用distinct去重,除非数据量小到单台服务器可做去重无压力的情况下可使用。大表场景下可采用group by 去重

sort by代替order by
order by将结果按某字段全局排序,这会导致所有map端数据都进入一个reducer中
ort by,那么还是会视情况启动多个reducer进行排序,并且保证每个reducer内局部有序,
    为了控制map端数据分配到

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值