当前位置:   article > 正文

hive 常用参数、参数优化_set hive(1)_set hive.tez.container.size

set hive.tez.container.size

2、解决OOM的参数
set tez.am.task.max.failed.attempts=10;
set tez.am.max.app.attempts=5;
set hive.tez.java.opts=-Xmx6144m;
配置Map任务的Java参数,如果任务处理的数据量过大,可以适当调节该参数,避免OOM(内存溢出)
set hive.tez.container.size=8192;

3、开启动态分区参数:
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.dynamic.partitions.pernode=1000;
set hive.exec.dynamic.partition=true; --默认:false
set hive.exec.dynamic.partition.mode = nonstrict; --默认:strict
set hive.exec.dynamic.partitions=10000; --分区最大数:如果按天分区的话设置10000足够了

4、使用场景:使用正则表达式来筛选字段
set hive.support.quoted.identifiers=none;
–反引号不在解释为其他含义,被解释为正则表达式
set hive.support.quoted.identifiers = none;

示例1:过滤掉不需要的列名(字段要用小括号包裹)
select (id|name)?+.+ from user_info;

示例2:模糊匹配有相似性的列名
select .+score from user_info;

5、hive锁机制
set hive.support.concurrency=false;
set hive.support.concurrency=false;
在 session 中关闭锁,这个参数为 false 既能保证session忽略任何锁强行操作数据,又能保证session里的SQL对表不加任何锁。

hive 目前主要有两种锁,SHARED(共享锁 S)和 Exclusive(排他锁 X)。其中只触发S锁的操作可以并发执行,只要有一个操作对表或者分区触发了X锁,则该表或者分区不能并发的执行作业。

总结起来就是:
1、查询操作使用共享锁,共享锁是可以多重、并发使用的多个查询同时访问一个表是可以的,同时使用共享锁

2、修改表操作使用独占锁,它会阻止其他的查询、修改操作
当修改表的时候,使用独占锁,所以此时没办法执行查询

3、可以对分区使用锁
对一个分区上锁,不影响其他分区使用

参考链接:hive锁机制

https://blog.csdn.net/Samooyou/article/details/125005500

6、开启向量执行模式
开启hive.vectorized.execution.enabled操作,默认是关闭状态,将一个普通的查询转化为向量化查询执行是一个Hive 特性。
它大大减少了扫描、过滤器、聚合和连接等典型查询操作的CPU 使用。
标准查询执行,系统一次处理一行。矢量化查询执行,可以一次性处理1024行的数据块,以减少底层操作系统处理数据时的指令和上下文切换

set hive.vectorized.execution.enabled=false;
set hive.vectorized.execution.enabled = true;
开启向量模式,默认值是false
相当于从原本的map逐行处理数据变成了批量处理数据,从处理一行到一次性处理多行,减少了cpu指令和cpu上下文切换.
可以提高效率;tez和spark引擎支持map和reduce端的向量模式
set hive.vectorized.execution.reduce.enabled=false;
表示是否启用reduce任务的向量化执行模式,默认值是true,但是mapreduce引擎并不支持,需要更换引擎才可以使用这个参数
set hive.vectorized.execution.reduce.groupby.enabled=false;

7、hive.cbo.enable
在 Hive 1.1.0 之后,这个 feature 是默认开启的,它可以自动优化 HQL中多个 Join 的顺序,并选择合适的 Join 算法。
set hive.cbo.enable=false;

CBO优化参考链接

https://blog.csdn.net/weixin_42921390/article/details/115289586

8、其他参数
set tez.am.java.opts=-Xmx6144m;
set tez.am.resource.memory.mb=4096;
#设置 tez AM 容器内存,默认值:1024;建议:不小于或者等于yarn.scheduler.minimum-allocation-mb值。
配置文件:tez-site.xml

set tez.runtime.shuffle.fetch.buffer.percent=0.10;
set tez.runtime.shuffle.memory.limit.percent=0.10;

set tez.runtime.io.sort.mb=2048;
tez.runtime.io.sort.mb:设置输出排序内存大小,默认100,建议:40%*hive.tez.container.size,一般不超过2G。

set mapred.map.tasks.speculative.execution=true;
set mapred.reduce.tasks.speculative.execution=true;

9、Hive并发执行

set hive.exec.parallel=true;
hive.exec.parallel参数,控制在同一个sql中的不同的job是否可以同时运行,默认为 false.
hive.exec.parallel:Hive并发执行,true表示并发,即开启作业并行。
若为true一个sql语句中分解的多个job没有顺序关系时会并发执行,有顺序关系时会按顺序执行,资源充足时建议开启。默认false。
set hive.exec.parallel.thread.number=64;
Hive.exec.parallel.thread.num:默认8,最多并行的作业数量,即1个sql最多允许8个mr或tez作业并行。

10、合并小文件

最后

针对以上面试题,小编已经把面试题+答案整理好了

最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo

最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo

最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo

面试专题

image

除了以上面试题+答案,小编同时还整理了微服务相关的实战文档也可以分享给大家学习

image

image

image

档也可以分享给大家学习**

[外链图片转存中…(img-Xf2aMkwM-1714297090991)]

[外链图片转存中…(img-Gik00eHM-1714297090992)]

[外链图片转存中…(img-3ndM0Zsz-1714297090993)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/833831
推荐阅读
相关标签
  

闽ICP备14008679号