Hive sql数据倾斜和性能优化
一、数据倾斜问题剖析
数据倾斜是分布式系统不可避免的问题,任何分布式系统都有几率发生数据倾斜,当然数据倾斜问题是在亿级数据造成机器无法应付这么多数据,这时发生数据倾斜,最后很难算出结果。
hive的原理机制是MR,在MR中最容易出现数据倾斜的就是reduce阶段,因为map到reduce会经过shuffle阶段,在shuffle中默认会按照key进行hash,如果相同的key过多,那么hash的结果就是大量相同的key进入到同一个reduce中,导致数据倾斜。当然map阶段也有可能发生数据倾斜,数据文件在进入map阶段之前会进行切分,默认是128M一个数据块,但是如果当对文件使用Gzip压缩等不支持文件分割操作的压缩方式时,MR任务读取压缩后的文件时,是对它切分不了的,该压缩智慧被一个任务所读取,如果有一个大的压缩文件被map读取时,就会发生map阶段的数据倾斜。
总结:
发生数据倾斜的原因有两种 :1、任务读取不可分割的大文件;2、任务中需要处理大量相同的key的数据。
二、怎么判断是否发生了数据倾斜
假如在hive sql的执行中可以使用explain来描述sql实际执行的整体轮廓,通过执行计划能了解sql程序在转换成相应计算引擎的执行逻辑,从而也能够更好的查看到出现的瓶颈,也就是通过explain定位问题来解决sql的优化。
三、explain
1、查看SQL的执行计划
explain:查看执行计划的基本信息
explain dependency:dependency在explain语句中使用会产生有关计划中输入的额外信息,显示了输入的各种属性。
explain authorization:查看SQL操作相关权限的信息。
explain vectorization:查看SQL的向量化描述信息,显示为什么未对Map和Reduce进行矢量化。
explain analyze:用实际的行数注释计划
explain cbo:输出由Calcite优化器生成的计划。
explain locks:了解系统将获得那些锁以运行指定的查询
explain ast:输出查询的抽象语法树
explain extended:加上extended可以输出有关计划的额外信息。
2 、explain的用法
explain select sum(id)from student;
四、 数据倾斜解决方案
在我们的整个hive执行过程中出现的数据倾斜问题还是比较多的,如:
1、空值引发的数据倾斜
2、不同数据类型引发的数据倾斜
3、不可拆分大文件引发的数据倾斜
4、数据膨胀引发的数据倾斜
5、表连接时引发的数据倾斜
6、无法减少数据量引发的数据倾斜
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgggjhj
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13