首页 > 技术文章 > hive优化点

18800105616a 2020-03-25 14:18 原文

1)map join(默认是开启的)

MapJoin是hive的一种优化操作,其适用于小表join大表的场景,由于表的操作是在Map端且在内存进行的,所以其不需要启动reduce任务也就不需要经过shuffle阶段,从而能在一定程度上节省资源提高Join效率。

2)分区,分桶

3)合理设置map个数,合理设置reduce个数

4)优化小文件(合并小文件)

在Map执行前合并小文件,减少Map数:CombineHiveInputFormat具有对小文件进行合并的功能

Map输入合并小文件
对应参数:

set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;  #执行Map前进行小文件合并
set mapred.max.split.size=256000000;  #每个Map最大输入大小
set mapred.min.split.size.per.node=100000000; #一个节点上split的至少的大小 
set mapred.min.split.size.per.rack=100000000; #一个交换机下split的至少的大小

5)常用参数

输出合并小文件

set hive.merge.mapfiles = true  默认true,在map-only任务结束时合并小文件

set hive.merge.mapredfiles = true 默认false,在map-reduce任务结束时合并小文件

set hive.merge.size.per.task = 256*1000*1000 #合并文件的大小

set hive.merge.smallfiles.avgsize=16000000当输出文件的平均大小小于该值时,启动一个独立的map-reduce任务进行文件merge

7)行列过滤

8)并行执行

9)严格模式

10)JVM重用

11)推测执行

 

 

 

【注】数据量大的使用mr引擎,数据量小,要求计算快的使用tez引擎,基于内存的计算。

 

推荐阅读