hive查询和优化

标签: hive 优化 | 发表时间:2015-08-27 20:28 | 作者:kayak2015
出处:http://www.iteye.com

1:Local Model(本地模式):

select user,item from table limit 10;(生成mapreduce)

select * from table limit 10;(不会生存mapreduce)

 

2:列剪裁 :hive在读数据的时候,可以只读取查询中所需要用到的列

 

3:分区剪裁:在查询的过程中减少不必要的分区

使用explain dependency语法,获取table和partition

 

4:hive的优化机制减少job数:如果join的key相同,不管有多少个表,都会合并为一个mapreduce

(1) select a.val,b.val,c.val from a join b on (a.key = b.key1) join c on (c.key = b.key1) 1个mapreduce

(2) select a.val,b.val,c.val from a join b on (a.key = b.key1) join c in (c.key = b.key2) 2个

 

5:job输入输出优化

(1) insert overwrite table tmp1 select .. from a where 条件1

(2) insert overwrite table tem1 select .. from a where 条件2

上述合为1个

from a 

          insert overwrite table tmp1 select ... where 条件1

          insert overwrite table tmp2 select ... where 条件2

 

6:避免笛卡儿积

select ... from woa_all_device_info_his A

left outer join(

              select * from woa_all_info_his B

              where  条件

) C

on A.app_id = C.app_id and A.imei = C.imei

 

7: 在join前过滤掉不需要的数据:包括分区过滤和条件过滤

 

8:小表放前大表放后:因为在Reduce阶段,位于join操作符左边的表的内容会被加载进内存,载入条目较少的表,可以有效减少内存溢出。当小表与大表join时,采用mapjoin,即在map端完成。可以避免数据倾斜。

select /*+mapjoin(b)*/ a.key,a.value from a join b on a.key = b.key

 

9: left semi join : 限制条件只能在on子句中设置过滤条件,在where子句,select子句或其他地方过滤不行

select a.key,b.key from a left semi join b on (a.key = b.key)

left semi join 与 join 的区别:b表有重复值的情况下left semi join 产生一条,join会产生多条

 

10:union all优化:局限于非嵌套查询

(1)

select * from (

             select c1,c2,c3 from t1 group by c1,c2,c3

             union all

             select c1,c2,c3 from t2 group by c1,c2,c3

) t3;

(2)

select * from (

             select * from t1

             union all

             select * from t2

) t3 group by c1,c2,c3

 

11: Distinct 与 Group by(去重优化):使用group by替代distinct

 

12:排序优化

1、order by实现全局排序,一个reduce实现,由于不能并发执行,所以效率低

2、sort by实现部分有序,单个reduce输出的结果是有序,效率高,和distribute by一起使用

3、cluster by col1 = distribute col1 sort by col1

 

13:  数据倾斜:任务进度只有reduce子任务未完成,因为处理的数据量和其他的reduce差异过大

http://www.cnblogs.com/ggjucheng/archive/2013/01/03/2842860.html

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [hive 优化] 推荐:

hive 优化 tips

- - CSDN博客推荐文章
一、     Hive join优化. 也可以显示声明进行map join:特别适用于小表join大表的时候,SELECT /*+ MAPJOIN(b) */ a.key, a.value FROM a join b on a.key = b.key. 2.     注意带表分区的join, 如:.

hive优化(2)

- - 开源软件 - ITeye博客
Hive是将符合SQL语法的字符串解析生成可以在Hadoop上执行的MapReduce的工具. 使用Hive尽量按照分布式计算的一些特点来设计sql,和传统关系型数据库有区别,. 所以需要去掉原有关系型数据库下开发的一些固有思维. 1:尽量尽早地过滤数据,减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段.

hive优化

- - 开源软件 - ITeye博客
hive.optimize.cp=true:列裁剪. hive.optimize.prunner:分区裁剪. hive.limit.optimize.enable=true:优化LIMIT n语句. hive.limit.optimize.limit.file=10:最大文件数.   1.job的输入数据大小必须小于参数:hive.exec.mode.local.auto.inputbytes.max(默认128MB).

Hive优化

- - 互联网 - ITeye博客
     使用Hive有一段时间了,目前发现需要进行优化的较多出现在出现join、distinct的情况下,而且一般都是reduce过程较慢.      Reduce过程比较慢的现象又可以分为两类:. 情形一:map已经达到100%,而reduce阶段一直是99%,属于数据倾斜. 情形二:使用了count(distinct)或者group by的操作,现象是reduce有进度但是进度缓慢,31%-32%-34%...一个附带的提示是使用reduce个数很可能是1.

hive优化

- - 互联网 - ITeye博客
1:尽量尽早地过滤数据,减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段. 2:尽量原子化操作,尽量避免一个SQL包含复杂逻辑. 可以使用中间表来完成复杂的逻辑. 3:单个SQL所起的JOB个数尽量控制在5个以下. 4:慎重使用mapjoin,一般行数小于2000行,大小小于1M(扩容后可以适当放大)的表才能使用,小表要注意放在join的左边(目前TCL里面很多都小表放在join的右边).

Hive优化总结

- - 淘剑笑的博客
优化时,把hive sql 当做map reduce 程序来读,会有意想不到的惊喜. 理解hadoop 的核心能力,是hive 优化的根本. 这是这一年来,项目组所有成员宝贵的经验总结. 长期观察hadoop处理数据的过程,有几个显著的特征 :. 1.不怕数据多,就怕数据倾斜. 2.对jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个jobs,没半小时是跑不完的.

HIVE 优化浅谈

- - IT瘾-dev
作者:邓力,entobit技术总监,八年大数据从业经历,由一代HADOOP入坑,深耕云计算应用领域,由从事亚马逊EMR和阿里云EMR应用开发逐步转入大数据架构领域,对大数据生态及框架应用有深刻理解. 随着商务/运营同学执行的HQL越来越多,整体HIVE执行效率变低,本文从HIVE切入,分析HQL面临的问题和待优化部分,结合其他大数据框架来解决实际问题.

Hive Join 优化 翻译

- - 数据库 - ITeye博客
翻译自  https://cwiki.apache.org/confluence/display/Hive/LanguageManual+JoinOptimization#LanguageManualJoinOptimization-AutoConversiontoSMBMapJoin. Join Optimization ----Join 调优.

hive优化要点总结

- - CSDN博客云计算推荐文章
1、让服务器尽可能的多做事情,榨干服务器资源,以最高系统吞吐量为目标. 再好的硬件没有充分利用起来,都是白扯淡. (1)  启动一次job尽可能的多做事情,一个job能完成的事情,不要两个job来做.  通常来说前面的任务启动可以稍带一起做的事情就一起做了,以便后续的多个任务重用,与此紧密相连的是模型设计,好的模型特别重要..

Hive作业优化总结

- - 开源软件 - ITeye博客
一、Hadoop 计算框架的特性. 4、设置合理reducer个数. 5、合并MapReduce操作. 一、Hadoop 计算框架的特性. •由于数据分布不均匀,造成数据大量的集中到一点,造成数据热点. 2、Hadoop框架的特性. •不怕数据大,怕数据倾斜. •jobs数比较多的作业运行效率相对比较低,如子查询比较多.