当前位置:   article > 正文

hive中常用的set设置_hive set

hive set

下面是常用的set设置优化hive,一般内存足够大的情况下建议使用spark引擎。如果数据量足够大,大于内存,则使用mapreduce;

--1.设置引擎为MR下,优化set如下
--打开动态分区后,允许所有分区都是动态分区模式
set hive.exec.dynamic.partition.mode = nonstrict;
-- 是否启动动态分区
set hive.exec.dynamic.partition=true;
--小文件合并参数
--设置map端输出进行合并,默认为true
--文件数目小,容易在文件存储端造成瓶颈,给HDFS带来压力,影响处理效率。对此,可以通过合并Map和Reduce的结果文件来消除这样的影响。
set hive.merge.mapfiles = true;
--设置reduce端输出进行合并,默认为false
set hive.merge.mapredfiles = true;
-- 开启并行执行:MapReduce阶段、抽样阶段、合并阶段、limit阶段等并行执行
set hive.exec.parallel=true;
--关闭并发,防止锁表
set hive.support.concurrency=false;
--是否在map端进行聚合默认是true。防止数据倾斜
hive.map.aggr=true;
--调整mapper和reducer的个数
--减少map数:下面三个参数确定合并文件块的大小,大于文件块大小128m的,按照128m来分隔,小于128m,大于100m的,按照100m来分隔,
--把那些小于100m的(包括小文件和分隔大文件剩下的)进行合并
set mapred.max.split.size=100000000;
set mapred.min.split.size.per.node=100000000; 
set mapred.min.split.size.per.rack=100000000;  
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; -- 执行前进行小文件合并 
--增加map数:当input的文件都很大, 任务逻辑复杂,map执行非常慢的时候,
--可以考虑增加Map数,来使得每个map处理的数据量减少,从而提高任务的执行效率
set mapred.reduce.tasks=10;
--增加reducer数
set mapred.reduce.tasks/mapreduce.job.reduces=?;
--每个reduce任务处理的数据量.默认1g
sethive.exec.reducers.bytes.per.reducer =1000000000;--1g
--每个任务最大的reduce数,默认为999
set hive.exec.reducers.max =?;
--每个任务最大的reduce数,默认为1009。
set Hive.exec.reducers.max=1009;
--调整reduce个数方法一
set  hive.exec.reducers.bytes.per.reducer=500000000; --(500M)
--调整reduce个数方法二
set mapreduce.job.reduces=15;--设置每个job的renduce个数
--严格模式:默认关闭禁止三种类型的查询:分区表不指定分区查询、笛卡尔积、使用order by
Set mapred.mode = strict;
--jvm重用:使用派生jvm来执行map和reduce任务
set mapred.job.jvm.numtasks=1;
--Joinon中有小表,则可以在map-side join执行过程中,将缓存到内存中的小表逐一匹配,从而可以省略所需要的reduce过程。Map Join优化, 不太大的表直接通过map过程做join
set hive.auto.convert.join = true;
set hive.auto.convert.join.noconditionaltask=true;

--2.设置引擎为spark:若内存允许,优先考虑使用spark
set hive.execution.engine=spark;
--小文件是HDFS的天敌,所以Hive原生提供了合并小文件的选项,合并小文件 
set hive.merge.sparkfiles=true--hive on Spark下则改用在内存中存储的近似大小.所以由MR迁移到Spark时要适当调高这个参数.由于HDFS上的数据很有可能被压缩或序列化
set hive.auto.convert.join.noconditionaltask.size = 100000000(100~200MB)

--如果一个简单查询只包括一个group by和order by,此处可以设置为1或2
hive.optimize.reducededuplication.min.reducer=4;
--如果数据已经根据相同的key做好聚合,那么去除掉多余的map/reduce作业
hive.optimize.reducededuplication=true;
--合并小文件
--hive.merge.mapfiles=true; --mr上
--hive.merge.mapredfiles=false
hive.merge.smallfiles.avgsize=16000000
hive.merge.size.per.task=256000000
hive.merge.sparkfiles=true;
--hive.merge.tezfiles=true; --tez上
set hive.merge.orcfile.stripe.level=true;
--Map Join优化, 不太大的表直接通过map过程做join
hive.auto.convert.join=true;
hive.auto.convert.join.noconditionaltask=true;
--可以被转化为HashMap放入内存的表的大小
hive.auto.convert.join.noconditionaltask.size=20M(might need to increase for Spark, 200M)
--如果数据按照join的key分桶,hive将简单优化inner join(官方推荐关闭)
set hive.optimize.bucketmapjoin= false;
hive.optimize.bucketmapjoin.sortedmerge=false;
--所有map任务可以用作Hashtable的内存百分比, 如果OOM, 调小这个参数(官方默认0.5)
hive.map.aggr.hash.percentmemory=0.5
--map端聚合(跟group by有关), 如果开启, Hive将会在map端做第一级的聚合, 会用更多的内存 
hive.map.aggr=true;
--hive0.13有个bug, 开启这个配置会对所有字段排序
hive.optimize.sort.dynamic.partition=false;
--新创建的表/分区是否自动计算统计数据
hive.stats.autogather=true
hive.stats.fetch.column.stats=true
hive.compute.query.using.stats=true;
--在order by limit查询中分配给存储Top K的内存为10%
hive.limit.pushdown.memory.usage=0.4 (MR and Spark)
--是否开启自动使用索引
hive.optimize.index.filter=true
--单个reduce处理的数据量 (影响reduce的数量) 
hive.exec.reducers.bytes.per.reducer=67108864
--Map Join任务HashMap中key对应value数量
hive.smbjoin.cache.rows=10000
--将只有SELECT, FILTER, LIMIT转化为FETCH, 减少等待时间
hive.fetch.task.conversion=more
hive.fetch.task.conversion.threshold=1073741824
--
hive.optimize.ppd=true



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/539579
推荐阅读
相关标签
  

闽ICP备14008679号