百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Hive调优汇总

bigegpt 2024-09-02 16:38 5 浏览

一、参数调优

1. explain

一个HIVE查询被转换为由一个或多个stage组成的序列(有向无环图DAG)。这些stage可以是mapreduce stage,也可以是负责元数据存储的stage,也可以是负责文件系统的操作(比如移动和重命名)的stage。EXPLAIN的输出包含以下三部分:

  1. 查询的抽象语法树
  1. 执行计划中的不同stage的依赖关系
  1. 每个stage的细致描述

TableScan:表扫描操作,map端第一个操作肯定是加载表,所以就是表扫描操作,

常见的属性:

alias: 表名称

Statistics: 表统计信息,包含表中数据条数,数据大小等

Select Operator: 选取操作,

常见的属性 :

expressions:需要的字段名称及字段类型

outputColumnNames:输出的列名称

Statistics:表统计信息,包含表中数据条数,数据大小等

Group By Operator:分组聚合操作,

常见的属性:

aggregations:显示聚合函数信息

mode:聚合模式,只有 hash:随机聚合,就是hash partition;

partial:局部聚合;final:最终聚合

keys:分组的字段,如果没有分组,则没有此字段

outputColumnNames:聚合之后输出列名

Statistics: 表统计信息,包含分组聚合之后的数据条数,数据大小等

Reduce Output Operator:输出到reduce操作,

常见属性:

sort order:值为空 不排序;值为 + 正序排序,值为 - 倒序排序;值为 +- 排序的列为两列,第一列为正序,第二列为倒序

Filter Operator:过滤操作,

常见的属性:

predicate:过滤条件,如sql语句中的where id>=1,则此处显示(id >= 1)

Map Join Operator:join 操作,

常见的属性:

condition map:join方式 ,如Inner Join 0 to 1 Left Outer Join0 to 2

keys: join 的条件字段

outputColumnNames: join 完成之后输出的字段

Statistics: join 完成之后生成的数据条数,大小等

File Output Operator:文件输出操作,

常见的属性

compressed:是否压缩

table:表的信息,包含输入输出文件格式化方式,序列化方式等

Fetch Operator 客户端获取数据操作,

常见的属性:

limit,值为 -1 表示不限制条数,其他值为限制的条数

2. 开启Fetch抓取

只要Hive不走MR的时候最快,直接返回文件内容

3. limit限制

一般情况下,使用了limit限制后仍然会全部执行,然后再返回部分结果。

hive.limit.optimize.enable=true --- 开启对数据源进行采样的功能
hive.limit.row.max.size=100000 ---设置最小的采样容量
hive.limit.optimize.limit.file --- 设置最大的采样样本数

4. 列裁剪和分区裁剪

列裁剪就是在查询时只读取需要的列,分区裁剪就是只读取需要的分区。

如果 select * 或者不指定分区,全列扫描和全表扫描效率都很低

5. 开启严格模式

1、对分区表查询必须带分区条件,否则会查询失败

2、带order by的查询,必须使用limit限制查询数据条数,否则会查询失败。

3、不能进行笛卡尔积的查询

4、查询条件里面字段类型赋值时必须一致,比如日期分区dt字段类型为字符串,那么分区条件必须指定为dt=‘20160508’,而不能用dt=20160508

6.开启并行模式

通过设置参数hive.exec.parallel值为true,就可以开启并发执行。不过,在共享集群中,需要注意下,如果job中并行阶段增多,那么集群利用率就会增加。

7. 开启本地模式

hive 默认会将所有任务,提交到yarn上执行,由yarn负责整个job的调度与监控xb;当数据集非常小时(只有一个block,只存在一个datanode节点上),提交job的时间 将远大于 job运行的时间,xb;此时可以开启本地模式,将job在本地运行,不提交到yarn上xb;避免了和yarn的交互,大大提高了数据计算的效率

8. Map Join

MapJoin 是将 Join 双方比较小的表直接分发到各个 Map 进程的内存中,在 Map 进程中进行 Join 操 作,这样就不用进行 Reduce 步骤,从而提高了速度。如果不指定MapJoin或者不符合MapJoin的条件,那么Hive解析器会将Join操作转换成Common Join,即:在Reduce阶段完成Join。容易发生数据倾斜。可以用MapJoin把小表全部加载到内存在Map端进行Join,避免Reducer处理。

9.开启Map端聚合&负载均衡

当选项设定为 true,生成的查询计划会有两个MR Job

第一个MR Job中,Map的输出结果会随机分布到Reduce中,每个Reduce做部分聚合操作,并输出结果,这样处理的结果是相同的Group By Key有可能被分发到不同的Reduce中,从而达到负载均衡的目的;第二个MR Job再根据预处理的数据结果按照Group By Key分布到Reduce中(这个过程可以保证相同的Group By Key被分布到同一个Reduce中),最后完成最终的聚合操作(虽然能解决数据倾斜,但是不能让运行速度的更快)

二、SQL调优

1. 谓词下推

就是在不影响结果的情况下,尽量将过滤条件提前执行。谓词下推后,过滤条件在map端执行,减少了map端的输出,降低了数据在集群上传输的量,节约了集群的资源,也提升了任务的性能。

官网:https://cwiki.apache.org/confluence/display/Hive/OuterJoinBehavior

1.规则

保留表的谓词写在join中不能下推,需要用where;

空表的谓词写在join之后不能下推,需要用on;

在 join关联情况下,过滤条件无论在join中还是where中谓词下推都生效;

在full join关联情况下,过滤条件无论在join中还是where中谓词下推都不生效。

2.left semi join

left semi join 只传递表的 join key 给 map 阶段,因此left semi join 中最后 select 的结果只许出现左表;遇到右表重复记录,左表会跳过,而 join 则会一直遍历。这就导致右表有重复值得情况下 left semi join 只产生一条,在关联的时候会更加的高效。

LEFT SEMI JOIN 的限制是,右侧表只能在连接条件(ON 子句)中引用,而不能在 WHERE 或 SELECT 子句等中引用。left semi join只能查询左表字段,不能查询右表字段。left semi join只能展示两个表能够关联上的数据。

三、特殊场景调优

1. 数据倾斜

要区分是数据量太大还是数据倾斜

原因:单表数据倾斜 Join数据倾斜

解决办法:

  1. 启Map端聚合&负载均衡
  • 当选项设定为 true,生成的查询计划会有两个MR Job。
  1. key值进行加盐(少用)
  1. Map Join
  • MapJoin 是将 Join 双方比较小的表直接分发到各个 Map 进程的内存中,在 Map 进程中进行 Join 操 作,这样就不用进行 Reduce 步骤,从而提高了速度。如果不指定MapJoin或者不符合MapJoin的条件,那么Hive解析器会将Join操作转换成Common Join,即:在Reduce阶段完成Join。容易发生数据倾斜。可以用MapJoin把小表全部加载到内存在Map端进行Join,避免Reducer处理。

1.小文件

1. 小文件的危害

1、文件存储在HDFS上,每个文件的元数据信息(位置、大小、分块信息)大约占150个字节,文件的元数据信息会分别存储在内存和磁盘中,会增加NameNode的存储量。

2、文件的数量决定了MapReduce中Mapper数量,小文件越多,Mapper的任务越多,每个Mapper都会对应启动一个JVM来运行,每个Mapper执行数据很少、个数多,导致占用资源多,甚至这些任务的初始化可能比执行的时间还要多,严重影响性能;

2. 使用HAR归档文件

运用于每日定时脚本,对于已经产生小文件的hive表可以使用har归档,而且hive提供了原生支持

set hive.archive.enabled= true ;
set hive.archive.har.parentdir.settable= true ;
set har.partfile.size=256000000;
ALTER TABLE ad_dev.wlb_tmp_smallfile_20210118 ARCHIVE PARTITION(pt='2022-03-01');

3. JVM重用

Hadoop的默认配置通常是使用派生JVM来执行map和Reduce任务的。这时JVM的启动过程可能会造成相当大的开销,尤其是执行的job包含有成百上千task任务的情况。JVM重用可以使得JVM实例在同一个job中重新使用N次。N的值可以在Hadoop的mapred-site.xml文件中进行配置。通常在10-20之间,具体多少需要根据具体业务场景测试得出。

4. map执行前合并小文件

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

5. Concatenate

如果是orc格式存储的表,还可以使用这个命令进行小文件的合并

6. distribute by

它的作用是控制在map端如何拆分数据给reduce端的,distribute by后面列是控制落地文件数,默认是采用hash算法;

insert overwrite table test partition(dt)
select *
from test
distribute by cast(rand()*100 as int);

相关推荐

一条命令搞定pip国内镜像源设置(pip install 指定镜像)

玩python的同学想必没有不用pip的吧,pip是python包管理工具,和Nodejs的npm、Java的maven类似,这些依靠开源力量建立起的庞大软件库极大提高了开发的效率,不过默认pytho...

Cadence Allegro在PCB中手动或者自动添加差分对属性

设计PCB过程中,若设计中有差分对信号,则需要将是差分的2个信号设置为差分对,设置差分对有2种方式:手动添加及自动添加一、手动添加差分对:1、点击Setup-Constraints-Constrain...

合亿 Gutab 三防|车载工业平板功能介绍,车载工业平板厂家推荐

在商用车队管理迈向智能化、特种车辆作业追求高效化的今天,车载工业平板早已突破传统“车载导航”的单一功能,成为连接车辆、司机与云端管理的核心枢纽。从物流运输的实时调度中枢,到矿山开采的无人驾驶控制器,再...

「探长分享-黑匣子」本田冠道 2020款

【品牌】探长360汽车黑匣子【产品型号】2TPro【安装车型】本田冠道2020款【功能特点】360全景安全辅助,行车录像,极致高清摄像头,模拟/数字高清/AHD多种信号格式输出,震动监控,一步标...

「探长分享-黑匣子」奥迪A6L 2019款

【品牌】探长360汽车黑匣子【产品型号】2TPro【安装车型】奥迪A6L2019款【功能特点】360全景安全辅助,行车录像,极致高清摄像头,模拟/数字高清/AHD多种信号格式输出,震动监控,一步...

探长360全景案例分享:奥迪Q7 2011款360全景效果展示

【品牌】DCT360汽车黑匣子【产品型号】3TPro【安装车型】奥迪Q72011款【功能特点】360全景安全辅助,四路行车录像,极致高清摄像头,模拟/数字高清/AHD多种信号格式输出,24小时停...

「探长分享-黑匣子」保时捷Cayenne 2015款

【品牌】探长360汽车黑匣子【产品型号】4TPro【安装车型】保时捷Cayenne2015款【功能特点】360全景安全辅助,四路行车录像,极致高清摄像头,模拟/数字高清/AHD多种信号格式输出,...

苍蝇再小也是肉,变态电路的大阳巧客S2差点难死大神

这台大阳巧客S2电动四轮车是我家第二台四轮俱全的篷车!哈哈!大阳巧客S2配置4.5Kw永磁同步电机,SVPWM矢量控制正弦波系统,车辆在加速、爬坡上性能有提升,效率高,操控灵敏。这台车前段时间刚更换了...

「探长分享-黑匣子」奥迪Q5L 2020款

360汽车黑匣子【产品型号】4TPro【安装车型】奥迪Q5L2020款【功能特点】360全景安全辅助,四路行车录像,极致高清摄像头,模拟/数字高清/AHD多种信号格式输出,24小时停车监控,一秒一...

「探长分享-黑匣子」丰田兰德酷路泽 2016款

【品牌】探长360汽车黑匣子【产品型号】3TPro【安装车型】丰田兰德酷路泽2016款【功能特点】360全景安全辅助,四路行车录像,极致高清摄像头,模拟/数字高清/AHD多种信号格式输出,24小...

驾驶室盲区是酿成重卡事故主因?后视系统:这个锅我不背

小时候家中长辈常常提醒:离大货车远一点!司机根本看不到你!早期的货车可能真的存在驾驶盲区,比如车辆正下方,因驾驶座过高,恰好是司机看不到的视野盲区。而如今的重卡在环视系统上已经非常完善,是否还存在驾驶...

前后双录,360 G580行车记录仪(360行车记录仪g580s)

相信每一位车主都会为爱车安装行车记录仪,行车记录仪的作用不仅能为交通事故还原证据,还能防止碰瓷。传统的单镜头行车记录仪只能拍摄车头方向的行车画面,如果遇到后方车辆故意碰瓷的事故时,没有监控和后摄画面则...

海康威视同轴录像机怎么使用,海康XVR配置说明

海康威视同轴录像机支持模拟、同轴以及数字IP摄像机接入,因此在使用多种类型摄像机、老久监控项目改造等场景广泛使用。首先,新录像机第一次使用需要设置管理密码激活,密码需由8-16位数字、小写字母、大写...

亿道三防2代工业级车载平板电脑震撼登场,农机矿车专用

亿道三防近日推出2024年全新2代车载平板电脑V12R,引领多项技术创新和升级,为农机、矿车等车载领域带来了超越期待与想象的震撼体验。V12R是一款从里到外,性能、功能全线拉满的工业级车载平板电脑!拥...

分析神州十八号返回舱内的摄像机最有可能是什么类型的摄像头

有没有发现,神州十八号返回舱内摄像机的图像虽然清晰度不是很高,但是画面非常干净,没有一点干扰,几乎看不到噪点。图像清晰度不高不太可能是镜头原因,很可能是图像传感器的分辨率比较低的原因,图像传感器分辨率...