【优化】Hive常用参数优化

发布于:2023-01-04 ⋅ 阅读:(418) ⋅ 点赞:(0)

1、使用本地模式执行

        set hive.exec.mode.local.auto=true

2、将Hive设置为“严格”模式

        set hive.mapred.mode=strict

        备注:strict(严格)、nonstrict(非严格)

3、动态分区属性

属性名称 缺省值 描述
hive.exec.dynamic.partition false 设置成true,表示开启动态分区功能
hive.exec.dynamic.partition.mode strict 设置成nonstrict,表示允许所有分区都是动态的
hive.exec.max.dynamic.partitions.pernode 100 每个mapper或reducer可以创建的最大动态分区个数。如果某个mapper或reducer尝试创建大于这个值的分区的话则会抛出一个致命错误信息
hive.exec.max.dynamic.partitions +1000 一个动态分区创建语句可以创建的最大动态分区个数。如果超过这个值则会抛出一个致命错误信息
hive.exec.max.created.files 100000 全局可以创建的最大文件个数。有一个Hadoop计数器会跟踪记录创建了多少个文件,如果超过这个值则会抛出一个致命错误信息

4、大表 join 小表时,将小表放到内存中缓存(默认情况下这个属性的值是false)

        set hive.auto.convert.join=true

5、设定放入内存的表的大小上限的

        set hive.mapjoin.smalltable.filesize=25000000

6、开启桶的关联(join)

        set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat

        set hive.optimize.buchetmapjoin=true

        set hive.optimize.bucketmapjoin.sortedmerge=true

7、向分桶表中填充数据

        set hive.enforce.bucketing=true

8、调整mapper和reducer个数

        set hive.exec.reducers.bytes.per.reducer=1G

        set mapred.reduce.tasks=96

9、group by数据倾斜

        set hive.map.aggr=true

        set hive.groupby.skewindata=true;


网站公告

今日签到

点亮在社区的每一天
去签到