HIVE调优方式(大全)

压缩方式:

HIVE压缩方式:

概述:压缩方式就类似于windows的压缩包,可以降低传输,提高磁盘利用率.

区分压缩协议好坏的参考纬度:

1.压缩比,即:压缩后文件大小

2.解压速度,即:读的速度

3.压缩速度,即:写的速度

存储方式

概述:分为 行存储 和列存储两种

具体划分:

行存储:TextFile(默认),SequenceFile

列存储:ORC(推荐),Parquet

 HIVE调优–Fetch抓取

核心点:在整形HiveSQL的时候,能不转MR,就不转MR

设置方式:

set hive.fetch.task.conversion=fetch抓取的模式;

Fetch抓取模式:

more: 默认的,全表扫描,查询指定的列,limit分页查询,简单查询不走MR,其他的要转MR任务

minimal: 全表扫描,查询指定的列,limit分页查询不走MR,其他的要转MR任务

none: 所有的HiveSQL,底层都要转MR

 Hive调优–本地模式

核心点:

        如果HiveSQL必须要转MR任务来执行,则尽量在本机(本地)直接执行,而不是交由Yarn来调度执行,针对与数据量比较小的需求,可以提高效率

设置:

–开启本地mr

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

  Hive调优–SQL优化

列裁剪:

        能写select 列 就不要写 select *

分区裁剪:

        编写SQL的时候,能使用分区条件,建立就一定要写分区字段

开启负载均衡:

        如果key分布不均,就可能导致数据倾斜的问题,可以通过 开启负载均衡解决

        开启之后程序底层会开启两个mr任务,第一个MR负责将数据随机打散,交由不同的ReduceTask任务来处理,获取结果.第二个MR会将结果进行合并获取最终结果

开启代码如下:

        set hive.groupby.skewindata=true;

 Hive调优–动态分区

建议动态分区的时候,关闭严格模式(默认开启),严格模式要求:动态分区的时候,至少指定1个静态分区

格式:

动态分区:partition(分区字段)

静态分区:partition(分区字段=值)

重点参数:

set hive.exec.dynamic.partition.mode=nonstrict;–开启非严格模式  默认为strict(严格模式)

 Hive调优–并行度和并行执行机制

并行度解释:

        根据业务需求,增大或者减少MapTask 和ReduceTask的任务数

Hive调优–严格模式

核心点:

禁用低效的SQL

设置方式:

        set hive.mapred.mode=strict | nonstrict;

Hive调优–JVM重用

核心点:

当MR任务执行结束后,Yarn创建的Container资源容器不会立刻销毁,而是可以重复使用 

Hive调优–推测执行

核心点:

        类似于木桶效应,job任务执行多长时间,取决于执行最慢的那个任务

解决方案:

        经过一定计算判定出处理最慢的任务,搞一个备份任务,同时开始,哪个先处理完就用哪个结果

建议:

        默认是开启的,建议关闭(占用资源),具体:看需求 

 Hive调优–join优化

小表join大表:

        开启Map段的join,在内存中完成处理,避免把join的动作交给ReduceTask段来处理,出现数据倾斜的情况.(默认为开启状态)

配置: set hive.auto.convert.join = true;

大表join大表:

1:空值过滤,降低处理的数据量

2:空值转换,在有大量的null值时,提高数据的处理速度

 Hive调优–explain执行计划

格式:

        explain HiveSQL语句

作用:

        可以查看HiveSQL语句的执行计划(阶段越少,相对执行速度越快)

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/189126a051.html