您当前的位置:首页 >> 装修攻略

大数据培训十大Hive调优擅长

2025-05-17 12:18:03

ame [ASC|DESC], …)]

INTO num_buckets BUCKETS;

4.对当两上端原始数据开通存储

比较简单的Hive转发一般来说不会转换为一系特多阶段的MapReduce需,并且这些需将由Hive引擎镜像起来以关机整个转发。因此,此处的“当两上端高度集中器”是指上一个MapReduce需的高度集中器,它将主要用途下一个MapReduce需的输出原始数据。

存储可以特别是在减少当两上端原始比特率,从而在在表面上减少了Map和Reduce之间的原始点对点量。

我们可以运用于下述也就是说在当两上端高度集中器上开通存储。

set hive.exec.compress.intermediate=true;

set hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;

set hive.intermediate.compression.type=BLOCK;

为了将最终高度集中器到HDFS的原始数据同步进讫存储,可以运用于下述也就是说:

set hive.exec.compress.output=true;

比如说是一些可以运用于的存储编解码器

org.apache.hadoop.io.compress.DefaultCodec

org.apache.hadoop.io.compress.GzipCodec

org.apache.hadoop.io.compress.BZip2Codec

com.hadoop.compression.lzo.LzopCodec

org.apache.hadoop.io.compress.Lz4Codec

org.apache.hadoop.io.compress.SnappyCodec

5.Map上端JOIN

map上端join适用于当一张表格较小(可以存在内核当中)的不会,即可以将小表格调用至内核。Hive从0.7开始支持关机时转至map上端join,确切内置如下:

SET hive.auto.convert.join=true; 便是 hivev0.11.0最后意味着true

SET hive.mapjoin.smalltable.filesize=600000000; 便是 意味着 25m

SET hive.auto.convert.join.noconditionaltask=true; 便是 意味着true,所以不并不需要选定map join hint

SET hive.auto.convert.join.noconditionaltask.size=10000000; 便是 高度集中调用到内核的表格的大小

一旦带入map上端join内置,Hive不会关机时检查小表格是否大于hive.mapjoin.smalltable.filesize内置的大小,如果大于则转至普通的join,如果低于则转至map上端join。

关于map上端join的原理,如下图右图:

首先,Task A(客户上端本地制订的task)负责存储设备小表格a,并将其转如此一来一个HashTable的原始堆栈,写入到本地PDF,最后将其调用至分布式PDF系统。

然后,Task B侦查不会关机map侦查存储设备大表格b,在Map阶段,【关注亦然科技公司,轻松学IT】根据每条记录与分布式PDF系统当中的a表格也就是说的hashtable相似之处,并高度集中器结果

注意:map上端join很难reduce侦查,所以map这样一来高度集中器结果,即有多少个map侦查就不会激发多少个结果PDF。

6.向加权

Hive当中的向加权转发制订再加了的现代转发操作者(如,容器,聚合和直达)的CPU流通量。

标准规范转发制订系统一次执讫一讫,在执讫下一讫此前,单讫原始数据不会被转发当中的所有运算符同步进讫执讫,造如此一来CPU运用于可靠性越来越为越来越高。在向加权转发制订当中,原始数据讫被批执讫在一起(意味着=> 1024讫),表格示为一组特向量。

要运用于向加权转发制订,不必以ORC文档(CDH 5)存储设备原始数据,并设为下述数组。

SET hive.vectorized.execution.enabled=true

在CDH 6当中意味着开通Hive转发向加权,开通转发向加权后,还可以设为其他也就是说来调整转发向加权的方式将,确切可以参考clouderaTwitter。

7.谓词都将

意味着生如此一来的制订方案不会在可见的位置制订容器,但在某些不会下,某些容器表格达式可以被推到越来越接近首次认出此特定原始数据的运算符的位置。

比如比如说的转发:

select

a.*,

from

a join b on (a.col1 = b.col1)

where a.col1> 15 and b.col2> 16

如果很难谓词都将,则在关机JOIN执讫最后将制订去除必需**(a.col1> 15和b.col2> 16)**。因此,在这种不会下,JOIN将首先发生,并且有可能激发越来越多的讫,然后在同步进讫去除操作者。

运用于谓词都将,这两个谓词**(a.col1> 15和b.col2> 16)**将在JOIN此前被执讫,因此它有可能不会从a和b当中去除进去直达当中较早执讫的大部分原始数据讫,因此,表格示同意开通谓词都将。

通过将hive.optimize.ppd设为为true可以开通谓词都将。

SET hive.optimize.ppd=true

8.输出文档同样

Hive支持TEXTFILE, SEQUENCEFILE, AVRO, RCFILE, ORC,以及PARQUET软件包,可以通过两种方式将选定表格的软件包:

CREATE TABLE … STORE AS :即在建表格时选定软件包,意味着是TEXTFILE ALTER TABLE … [PARTITION partition_spec] SET FILEFORMAT :改动确切表格的软件包

如果未选定PDF存储设备文档,则意味着运用于的是表达式hive.default.fileformat设定的文档。

如果原始数据存储设备在低于块大小的小PDF当中,则可以运用于SEQUENCE软件包。如果要以减少存储设备空间并大大提高耐用性的构建方式将存储设备原始数据,则可以运用于ORC软件包,而当特当中嵌套的原始数据过多时,Parquet文档不会很有用。因此,并不需要根据拥有的原始数据确定输出软件包。

9.关机严格方式将

如果要转发分组的Hive表格,但不提供者分组谓词(分组特必需),则在这种不会下,将针对该表格的所有分组发信转发,这有可能不会越来越为耗时且占用能源。因此,我们将比如说的也就是说表述为strict,以指示在分组表格上未提供者分组谓词的不会下编译器将引发差错。

SET hive.partition.pruning=strict

10.基于效益的构建

Hive在提交最终制订此前不会构建每个转发的自然语言和宇宙学制订方案。基于效益的构建不会根据转发效益同步进讫进一步的构建,从而有可能激发各有不同的决策:比如如何不得不JOIN的时序,制订哪种一般来说的JOIN以及并讫度等www.atguigu.com。

可以通过设为下述表达式来开通基于效益的构建。

set hive.cbo.enable=true;

set hive.compute.query.using.stats=true;

set hive.stats.fetch.column.stats=true;

set hive.stats.fetch.partition.stats=true;

可以运用于统计资料接收者来构建转发以大大提高耐用性。基于效益的构建器(CBO)还运用于统计资料接收者来比较转发方案并同样最佳方案。通过提示统计资料接收者而不是运讫转发,可靠性不会很低。

收集表格的特统计资料接收者:

ANALYZE TABLE mytable COMPUTE STATISTICS FOR COLUMNS;

提示my_db原始元数据当中my_table当中my_id特的特统计资料接收者:

DESCRIBE FORMATTED my_db.my_table my_id

评论来源于Ja与大原始数据Core

推荐阅读:

大原始数据共同开发之Hive调优技巧

大原始数据共同开发之Hive应用分析方法

大原始数据共同开发之Hive解析Json数组

宁波牛皮癣医院地址
成都妇科医院哪个好
信阳妇科医院哪最好
信阳妇科专科医院哪好
引起脑卒中原因
视疲劳滴哪个滴眼液好用
缓解视疲劳
止咳糖浆喝几天好得快点
孩子乳糖不耐受引起的腹泻吃什么药
视疲劳滴眼液
友情链接