标签: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