压缩方式:
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语句
作用:文章来源:https://www.toymoban.com/news/detail-816390.html
可以查看HiveSQL语句的执行计划(阶段越少,相对执行速度越快)文章来源地址https://www.toymoban.com/news/detail-816390.html
到了这里,关于HIVE调优方式(大全)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!