Hive记录-Hive调优
1.Join优化
a.map join
b.reduce join
小表为驱动表,或直接将小表加载到内存,做map端join,它的关键字为/*+MAP JOIN(t1)*/
如果想自动开启map端Join,可以通过hive.mapjoin.smalltable.filesize(默认为25000000)来定义小表的大小,一旦在这个范围之内,就会自动进行map端Join
2.Reducer的数量
Hive作业Reducer数量会直接影响作业效率,Hive的Reducer的是通过如下两个参数确定
参数1:hive.exec.reducers.bytes.per.reducer默认为1GB
参数2:hive.exec.reducers.max默认为999
Reducer的个数=min(参数2,总输入数据量/参数1)
3.列裁剪和分区裁剪---减少作业输入,略过一些不需要的数据
hive.optimize.cp(列裁剪)、hive.optimize.pruner(分区裁剪)默认开启
4.Group by优化
Map端合并
参数1:hive.map.aggr是否在Map端进行聚合,默认为true
参数2:hive.groupby.mapaggr.checkinterval在Map端进行聚合操作的条目数目,默认为100000.
防止数据倾斜:hive.groupby.skewindata
如select count(*) from table group by key,如有数据倾斜,以key=1为准,其他情况进行聚合
5.合并小文件
当文件数目过多时,会给HDFS带来压力,可以通过合并Map和Reduce的输出文件来减少文件数。
参数1:hive.merge.mapfiles=true 是否合并Map阶段的输出文件
参数2:hive.merge.mapredfiles=true 是否合并Reduce阶段的输出文件
参数3:hive.merge.size.per.task=256000000合并的文件的大小默认为256000000
6.Multi-group By和Multi-insert
hive特有的语法,可以在同一个查询语句中使用多个不相交的insert语句,只需扫描一遍全表
如from test insert overwrite table test1 select a,count(e) group by a... insert overwrite...
7.利用Union All特性
合并多个MapReduce作业:select union all select---先合并再分组
8.并行执行---提高效率,但会抢占资源
参数1:hive.exec.parallel=true
9.全排序
hive-mapreduce:order by/sort by
Hive记录-Hive调优的更多相关文章
- Hive on MR调优
当HiveQL跑不出来时,基本上是数据倾斜了,比如出现count(distinct),groupby,join等情况,理解 MR 底层原理,同时结合实际的业务,数据的类型,分布,质量状况等来实际的考虑 ...
- 大数据学习day28-----hive03------1. null值处理,子串,拼接,类型转换 2.行转列,列转行 3. 窗口函数(over,lead,lag等函数) 4.rank(行号函数)5. json解析函数 6.jdbc连接hive,企业级调优
1. null值处理,子串,拼接,类型转换 (1) 空字段赋值(null值处理) 当表中的某个字段为null时,比如奖金,当你要统计一个人的总工资时,字段为null的值就无法处理,这个时候就可以使用N ...
- Hive| 压缩| 存储| 调优
Hadoop压缩配置 修改Hadoop集群具有Snappy压缩方式: 查看hadoop支持的压缩方式 [kris@hadoop101 datas]$ hadoop checknative 将编译好的支 ...
- 大数据:Hive常用参数调优
1.limit限制调整 一般情况下,Limit语句还是需要执行整个查询语句,然后再返回部分结果. 有一个配置属性可以开启,避免这种情况---对数据源进行抽样 hive.limit.optimize.e ...
- Hive记录-Hive介绍(转载)
1.Hive是什么? Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,将类 SQL 语句转换为 MapReduce 任务执 ...
- Hive记录-Hive on Spark环境部署
1.hive执行引擎 Hive默认使用MapReduce作为执行引擎,即Hive on mr.实际上,Hive还可以使用Tez和Spark作为其执行引擎,分别为Hive on Tez和Hive on ...
- Hive记录-Hive常用命令操作
1.hive支持四种数据模型 • external table ---外部表:Hive中的外部表和表很类似,但是其数据不是放在自己表所属的目录中,而是存放到别处,这样的好处是如果你要删除这个外部表,该 ...
- Hive记录-hive权限控制
在使用Hive的元数据配置权限之前必须现在hive-site.xml中配置两个参数,配置参数如下: <property> <name>hive.security.authori ...
- Linux 文件时间记录属性 调优
Linux 文件时间属性介绍 atime:(access time)显示的是文件中的数据最后被访问的时间,比如系统的进程直接使用或通过一些命令和脚本间接使用.(执行一些可执行文件或脚本) mtime: ...
随机推荐
- php多进程pcntl学习-僵尸进程
上个月写的文章,php多进程pcntl学习(一)现在发现并不完整,因为虽然提到了关闭子进程,但是并没有回收子进程,简单的说就是当子进程比父进程先退出,而父进程没对其做任何处理的时候,子进程将会变成僵尸 ...
- java基础知识点罗列
1:Java泛型 2:clone Java中的深拷贝(深复制)和浅拷贝(浅复制) Java中对Clone的理解 序列化和反序列化的概念 3:Java中有关Null的9件事
- mysql学习笔记三 —— 数据恢复与备份
要点: 1.存储引擎2.导入导出3.备份与恢复 查看当前数据库中的所有表use db1:show tables: 1.存储引擎 不同的发动机(引擎)适用的汽车类型不一样. 存储和处理的不同方式.不同的 ...
- 线性代数的本质与几何意义 03. 矩阵与线性变换 (3blue1brown 咪博士 图文注解版)
首先,恭喜你读到了咪博士的这篇文章.本文可以说是该系列最重要.最核心的文章.你对线性代数的一切困惑,根源就在于没有真正理解矩阵到底是什么.读完咪博士的这篇文章,你一定会有一种醍醐灌顶.豁然开朗的感觉! ...
- python之文件目录操作
代码示例: # 改变当前目录操作 import os cur = os.curdir print("1.当前目录相对路径:", cur) par = os.pardir print ...
- 云时代的IT运维面临将会有哪些变化
导读 每一次IT系统的转型,运维系统和业务保障都是最艰难的部分.在当前企业IT系统向云架构转型的时刻,运维系统再一次面临着新的挑战.所以在数据中心运维的时候,运维人员应该注意哪些问题? 在云计算时代, ...
- ef group 封装
表达式树,传递 group public class Test<T> where T : class { MoviesEntities db = new MoviesEntities(); ...
- Codeforces976E Well played! 【贪心】
题目分析: 由于乘二的收获很大,所以我们可以证明乘的数一定是同一个,接着排序后依次选取,判断一下即可. 题目代码: #include<bits/stdc++.h> using namesp ...
- Food HDU - 4292 (结点容量 拆点) Dinic
You, a part-time dining service worker in your college’s dining hall, are now confused with a new pr ...
- ra (数论 , 莫比乌斯反演 , 整点统计)
题意 求 \[\displaystyle \sum_{i=1}^{n} \sum_{j=1}^{n} [\mathrm{lcm} (i,j) > n] \pmod {10^9 + 7}\] . ...