hive sql优化,
优化时,把hive sql当做map reduce程序来读,会有意想不到的惊喜。hadoop处理数据的过程,有以下显著的特征: 1、不怕数据多,就怕数据倾斜 2、对jobs数比较多的作业运行效率相对比较低,比如即使使用几百行的表,如果多次关联多次汇总,产生十几个jobs,没半个小时是跑不完的。map reduce作业初始化的时间是比较长的。 3、对sum,count来说,不存在数据倾斜问题。 4、对count(distinct ),效率较低,数据量一多,准出问题,如果是多count(distinct )效率更低。
优化可以从几个方面着手: 1、好的模型设计事半功倍。 2、解决数据倾斜问题。 3、减少job数。 4、设置合理的map reduce的task数,能有效提升性能。(比如,10W+级别的计算,用160个reduce,那是相当的浪费,1个足够)。 5、自己动手写sql解决数据倾斜问题是个不错的选择。set hive.groupby.skewindata = true; 这是通用的算法优化,但算法优化总是漠视业务,习惯性提供通用的解决方法。Etl开发人员更了解业务,更了解数据,所以通过业务逻辑解决倾斜的方法往往更精确,更有效。 6、对count(distinct )采用漠视的方法,尤其数据大的时候很容易产生倾斜问题,不抱侥幸心理。自己动手,丰衣足食。 7、对小文件进行合并,是行之有效的提高调度效率的方法,假如我们的作业是设置合理的文件数,对云梯的整体调度效率也会产生积极的影响。 8、优化时把握整体,单个作业最优不如整体最优。
如果union all的部分个数大于2,或者每个union部分数据量大,应该拆成多个insert into 语句,实际测试过程中,执行时间能提升50%
ps:http://blog.csdn.net/zjw11763/article/details/9003830
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。