架构层面:(最有效)
-分表,日志表每天有很大数据量,又有很多作业访问,表规模决定耗时,所以要把用的比较少的数据分出去
-合理利用中间结果集,最重要,重视查过就丢的资源浪费,hadoop的io负载瓶颈,hadoop有很多文件句炳
-常用的复杂统计或低效统计给出,以避免上层作业过多计算,比如这些复杂指标,最好放在基础表(元表)中统计出来
-合理设计表分区,hive有静态分区和动态分区。用的比较多的是静态分区,有时候动态分区很好用
语法层面:
-执行计划。。只影响个别作业
参数层面:(全局)
-很少用,因为太暴力,有时会起到很好效果
分表:
日志表trackinfo,每天2亿数据量,有5000个作业按天访问
精准化营销(邮件营销)edm,网盟unoin,这两块剥离之后,trackinfo降至1.5亿,时间就会减少40分钟左右
edm_union_track只有大约5个作业按天访问
架构优化:合理利用中间结果集
hadoop的负载主要是:
cpu负载和io负载
压缩技术降低了io负载,但是加重了cpu负载
随着job增加,io资源通常是最大的瓶颈,文件读写造成固有的总忌讳代码,查了就丢
百分之九十是按天执行,每天执行一次
百分之五每小时执行一次