码迷,mamicode.com
首页 > 其他好文 > 详细

Hive架构层面优化之五合理设计表分区(静态分区和动态分区)

时间:2014-07-18 20:16:47      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   strong   数据   

合理建表分区有效提高查询速度。

 

重要数据采用外部表存储,CREATE EXTERNAL TABLE,数据和表只是一个location的关联,drop表后数据不会丢失;

内部表也叫托管表,drop表后数据丢失;所以重要数据的表不能采用内部表的方式存储。

 

在全天的数据里查询某个时段的数据,性能很低效------可以通过增加小时级别的分区来改进!

 

Trackreal为例,有三个分区:

日增量: 按日期分区;

小时增量:按日期、小时分区;

10分钟增量:按日期、小时、step分区;每个小时要导6次。

 

场景:大量小时级别作业访问trackinfo,但是trackinfo是按日增量的,性能很低下。

解决方案:在按日分区的前提下,改造成trackinfo_hour表添加按小时分区;

 

最佳实践:

凌晨1点到7点(XX省份生产测试,数据从凌晨1点开始跑到早上7点能跑完离线作业),由于有很多日执行的作业需要执行,故集群会很忙,此时不允许小时级别的作业执行;10点之后再执行小时级别的作业,0点到9点的时候此时再补跑,可以采用动态分区(主分区采用静态分区即按日分区,次分区为动态分区)

案例:

insert overwrite table trackinfo_hour partition(ds=‘${today}‘,hour)
select .... , hour
from tmp_trackinfo_hour

动态分区使用注意事项:动态分区字段必须要出现在select中,并且是处于最后一个字段

Hive架构层面优化之五合理设计表分区(静态分区和动态分区),布布扣,bubuko.com

Hive架构层面优化之五合理设计表分区(静态分区和动态分区)

标签:style   blog   color   使用   strong   数据   

原文地址:http://www.cnblogs.com/luogankun/p/3850437.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!