Hive的优化
Hive针对不同的查询进行优化,其优化过程可以通过配置进行控制。
1.列裁剪(Column Pruning)
在读取数据时,只读取查询中需要用到的列,而忽略其他的列,例如如下查询:
[code="hive]select a,b from t where e<10;
其中,对于表t包含的5个列(a,b,c,d,e)进行列裁剪,列c和列d将会被忽略掉,执行中只会读取a,b,c列。要实现列裁剪,需要设置参数:
set hive.optimize.cp=true
2.分区裁剪(Partition Pruning)
在查询过程中减少不必要的分区,例如如下查询:
select * from (select c1,count(1) from t group by c1) subq where subq.prtn =100;
select * from t1 join (select * from t2) subq on (t1.c1=t2.c2) where subq.prtn=100;
经过分区裁剪优化的查询,会在子查询中就考虑subq.prtn=100的条件,从而减少读入的分区数目。要实现分区裁剪,须设置:
set hive.optimize.pruner=true
3.join操作
当使用有join操作的查询语句时,有一条原则:应该将条数少的表/子查询放在join操作符的左边。原因是在join操作的Reduce阶段,join操作符左边表中的内容会被加载到内存中,将条目少的表放在左边可以有效的减少发生内存溢出的几率。
对于一条语句中有多个join的情况,如果join的条件相同可以进行优化,比如如下查询:
insert overwrite table pv_users
select pv.pageid, u.age from page_view p
join user u on(pv.userid=u.userid)
join newuser x on(u.userid=x.userid);
我们可以进行的优化是,如果join的key相同,那么不管有多少表,都会合并为一个MapReduce。如果join的条件不同,比如:
insert overwrite table pv_users
select pv.pageid,u.age from page_view p
join user u on (pv.userid=u.userid)
join newuser x on(u.age=x.age);
如果MapReduce的任务数目和join操作的数据是对应的,那么上述查询和一下查询是等价的:
insert overwrite table tmptable
select * from page_view p
join user u on(pv.userid=u.userid);
insert overwrite table pv_users
select x.pageid,x.age from tmptable x
join newuser y on(x.age=y.age);
hive中新加字段需要注意如下:
1)如果表中有分区字段,必须先删除分区才能插入数据否则为null;
2)insert override TABLE table1 select counm1,counm2 from table2; counm1,counm2的顺序必须与table1中字段的顺序一致否则为插入的值不对;
分享到:
相关推荐
Hive思维导图之Hive优化
hive优化总结 Hive优化总结是Hive性能优化的总结,涉及HIVE的参数设置、HQL语言的写法、JOIN操作的优化、MapReduce操作的优化、列裁剪、分区裁剪等多个方面。 1. 配置文件优化 Hive的配置文件hive-site.xml是Hive...
作为企业Hadoop应用的核心产品,Hive承载着FaceBook、淘宝等大佬 95%... 拥有1万多个Hive作业的大电商如何进行Hive优化的?本系列课结合企业实战和场景从作业架构层面、Hql(Hive sql)语法层面、Hive参数层面依次讲述。
HIVE优化实战分享 大数据存储方案 很好的参考文档
- **利用Hive对UNION ALL的优化**:Hive优化非嵌套的UNION ALL查询,但嵌套查询不受此优化影响。 5. **Hadoop通用关联实现**: - **关联通过二次排序实现**:关联列作为分区键,关联列和其他列组合形成排序的组键...
### 工作总结:Hive优化 在大数据处理领域,Hive作为一种常用的数据仓库工具,其性能优化一直是数据工程师关注的重点。本文将基于提供的“hive优化”文档内容,深入探讨Hive优化的关键策略与实践技巧。 #### 核心...
Hive 优化方法整理 Hive 优化方法整理是 Hive 数据处理过程中的重要步骤,涉及到 Hive 的类 SQL 语句本身进行调优、参数调优、Hadoop 的 HDFS 参数调优和 Map/Reduce 调优等多个方面。 Hive 类 SQL 语句优化 1. ...
Hive优化案例、Hive数据处理模式、Hive常见问题与优化、Hive实践 Hive是一种基于Hadoop的数据仓库工具,用于对大规模数据进行处理和分析。在大数据时代,Hive的应用非常广泛,本文将从Hive优化案例、Hive数据处理...
Hive 参数优化总结 Hive 是一个基于 Hadoop 的数据仓库工具,用于对大规模数据进行查询、分析和处理。为了提高 Hive 的性能和效率,参数优化是非常重要的一步。本文档将总结 Hive 参数优化的相关知识点,并对 Hive ...
Hive优化.xmind
在处理Hive优化的讨论中,关键因素之一是控制Hive任务中的Map数量,这直接影响作业的效率和资源消耗。在Hive中,一个作业是通过分析input目录下的数据文件来创建一个或多个Map任务的,而影响Map数量的主要因素包括...
hive 优化在面试以及工作中经常使用,我整理了一份思维导图供大家学习。
一、Hive优化 1. **元数据优化**:Hive依赖于元数据服务(如MySQL或Derby)来存储表结构和分区信息。确保元数据服务器的性能稳定,可以减少查询解析时间。 2. **分区策略**:通过为大表创建合适的分区,可以显著...
然而,随着数据量的不断增长,Hive 的性能优化变得至关重要。本篇文章将深入探讨针对Hive进行优化的一些关键策略。 首先,我们来关注一个常见的问题——慎用 `count(distinct(columnA))` 函数。在处理大数据集时,...
1. **表分区**:分区是Hive优化的基础,通过将大表划分为小的逻辑部分,可以显著提高查询速度。合理的分区策略应基于查询中常用的过滤条件,例如日期、地区等。 2. ** bucketing 和 sorting**:通过bucketing,数据...
### Hive性能优化总结 #### 一、Hadoop与Hive计算框架特性引发的问题 Hadoop作为大数据处理平台,其核心优势在于能够高效处理大规模数据集。然而,在具体的应用场景中,尤其是在Hive作为数据仓库使用时,仍存在...
2. **Hive Metastore优化**:保持Metastore整洁,定期清理不再使用的表和分区,确保元数据检索高效。 3. **配置调优**:根据集群资源和任务特性调整Hive的配置参数,如mapred.tasktracker.map.tasks.maximum、hive....
Hive优化方法 Hive是一个基于Hadoop的数据仓库工具,用于存储和处理大规模数据。然而,在Hive开发过程中,常见的性能问题之一是数据倾斜问题。数据倾斜是指在数据处理时,某些key值或某些记录出现了异常高的频率,...