• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Hive sql数据倾斜和性能优化

武飞扬头像
秃头小宝贝儿i
帮助1

一、数据倾斜问题剖析

        数据倾斜是分布式系统不可避免的问题,任何分布式系统都有几率发生数据倾斜,当然数据倾斜问题是在亿级数据造成机器无法应付这么多数据,这时发生数据倾斜,最后很难算出结果。

        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
系列文章
更多 icon
同类精品
更多 icon
继续加载