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调优的更多相关文章

  1. Hive on MR调优

    当HiveQL跑不出来时,基本上是数据倾斜了,比如出现count(distinct),groupby,join等情况,理解 MR 底层原理,同时结合实际的业务,数据的类型,分布,质量状况等来实际的考虑 ...

  2. 大数据学习day28-----hive03------1. null值处理,子串,拼接,类型转换 2.行转列,列转行 3. 窗口函数(over,lead,lag等函数) 4.rank(行号函数)5. json解析函数 6.jdbc连接hive,企业级调优

    1. null值处理,子串,拼接,类型转换 (1) 空字段赋值(null值处理) 当表中的某个字段为null时,比如奖金,当你要统计一个人的总工资时,字段为null的值就无法处理,这个时候就可以使用N ...

  3. Hive| 压缩| 存储| 调优

    Hadoop压缩配置 修改Hadoop集群具有Snappy压缩方式: 查看hadoop支持的压缩方式 [kris@hadoop101 datas]$ hadoop checknative 将编译好的支 ...

  4. 大数据:Hive常用参数调优

    1.limit限制调整 一般情况下,Limit语句还是需要执行整个查询语句,然后再返回部分结果. 有一个配置属性可以开启,避免这种情况---对数据源进行抽样 hive.limit.optimize.e ...

  5. Hive记录-Hive介绍(转载)

    1.Hive是什么? Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,将类 SQL 语句转换为 MapReduce 任务执 ...

  6. Hive记录-Hive on Spark环境部署

    1.hive执行引擎 Hive默认使用MapReduce作为执行引擎,即Hive on mr.实际上,Hive还可以使用Tez和Spark作为其执行引擎,分别为Hive on Tez和Hive on ...

  7. Hive记录-Hive常用命令操作

    1.hive支持四种数据模型 • external table ---外部表:Hive中的外部表和表很类似,但是其数据不是放在自己表所属的目录中,而是存放到别处,这样的好处是如果你要删除这个外部表,该 ...

  8. Hive记录-hive权限控制

    在使用Hive的元数据配置权限之前必须现在hive-site.xml中配置两个参数,配置参数如下: <property> <name>hive.security.authori ...

  9. Linux 文件时间记录属性 调优

    Linux 文件时间属性介绍 atime:(access time)显示的是文件中的数据最后被访问的时间,比如系统的进程直接使用或通过一些命令和脚本间接使用.(执行一些可执行文件或脚本) mtime: ...

随机推荐

  1. oracle mysql gbk varchar varchar2

    http://www.cnblogs.com/kxdblog/p/4042331.html https://wenku.baidu.com/view/97524e0f844769eae009ed80. ...

  2. VM虚拟机—JVM内存

    JVM在运行时将数据划分为了5个区域来存储,这5个区域图示如下: 其中方法区和堆对是所有线程共享的内存区域:而java栈.本地方法栈和程序员计数器是运行时线程私有的内存区域. 首先我们熟悉一下一个 J ...

  3. [读书笔记]Linux命令行与shell编程读书笔记01

    1. Linux的组成部分 1)linux内核(kernel) 2)GNU工具链 3)GUI/CLI工作几面(shell) 4)应用程序(app) 2Linux内核的主要工作: 1) 管理内存 2)管 ...

  4. 【转帖】ARM的两种不同的CPU docker 应该也是支持arm的

    armel和armhf区别选择 知识经验  3年前 (2014-11-07)  20603浏览  1评论 目录 fpu单元 armel与armhf 安装armel和armhf arm-linux-gn ...

  5. BOM嵌套简单写法

    WITHTREE AS( SELECT a.FItemID cfitemid,b.FItemID pfitemid FROM dbo.ICBOMChild a,dbo.ICBOM b WHERE a. ...

  6. 流程控制之if判断,while循环,for循环

    if判断? 什么是if判断? 判断一个条件如果成立则做...不成立则... 为什么要有判断? 让计算机像人一样具备判断的能力 如何用if判断 if 条件1: code1    code2    cod ...

  7. Flutter & Dart

    Flutter & Dart https://www.dartlang.org/install https://flutter.dev/ https://flutter.dev/docs/ge ...

  8. D3.js v5 Tutorials

    D3.js v5 Tutorials D3.js v5 教程 https://github.com/d3/d3/blob/master/API.md CHANGES https://github.co ...

  9. C#中的DateTime

    一.DateTime是值类型还是引用类型的探索 二.了解DateTime结构体 三.DateTime.Now和DateTime.UtcNow是怎么计算出来的 一.DateTime是值类型还是引用类型的 ...

  10. BZOJ4012 HNOI2015开店(树链剖分+主席树)

    考虑这样一个问题:一棵树初始全是白点,有两种操作:把一个点染黑:询问某点到所有黑点的距离之和. 注意到树上两点x和y的距离为depth[x]+depth[y]-depth[lca(x,y)]*2.要求 ...