博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hive记录-Hive调优
阅读量:4353 次
发布时间:2019-06-07

本文共 1248 字,大约阅读时间需要 4 分钟。

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

转载于:https://www.cnblogs.com/xinfang520/p/7684593.html

你可能感兴趣的文章
梦织未来Windows驱动编程 第06课 驱动对磁盘文件的操作
查看>>
(剑指Offer)面试题24:二叉搜索树的后序遍历序列
查看>>
vcastr3.swf免费开源android可用的FLV播放器使用详解
查看>>
关情纸尾-----UIKit基础-UITableView
查看>>
python之反射
查看>>
公共类
查看>>
linux系统常用命令
查看>>
python实现购物车程序
查看>>
微信小程序UI------实现携程首页顶部的界面(弹性布局)
查看>>
Android事件传递机制(dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent)
查看>>
centos 由2.7 升级为3.7
查看>>
Vim使用手册
查看>>
Leetcode 30.与所有单词相关联的子串
查看>>
【转】 java中HashMap详解
查看>>
linux 进程 进程组 作业 会话 控制终端
查看>>
缺陷描述是这样提高的
查看>>
UVA 1442 Cav
查看>>
网络爬虫作业
查看>>
java语言的科学与艺术-编程练习10.4(改进)
查看>>
WebServices介绍
查看>>