IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 聊一聊hive sql 执行计划 -> 正文阅读

[大数据]聊一聊hive sql 执行计划

Hive提供的执行计划目前可以查看的信息有以下几种:

● 查看执行计划的基本信息,即explain;

● 查看执行计划的扩展信息,即explain extended;

● 查看SQL数据输入依赖的信息,即explain dependency;

● 查看SQL操作相关权限的信息,即explain authorization;

● 查看SQL的向量化描述信息,即explain vectorization。

MR引擎下,用explain打开的执行计划包含以下两部分:

● 作业的依赖关系图,即STAGE DEPENDENCIES;

● 每个作业的详细信息,即STAGE PLANS。

举个栗子:

执行结果如下:

解读:

  • stage dependencies描绘了作业之间的依赖关系,

即stage0依赖stage-1的执行结果。stage-0表示客户端读取stage-1的执行结果

stage-1表示如下SQL,即select *from student_tb_orc where s_age<30 and s_name like'%红%’的执行过程。

Stage-1分为Map和Reduce两个阶段,对应的执行计划关键词解读如下:

● MapReduce:表示当前任务执行所用的计算引擎是MapReduce。

● Map Opertaor Tree:表示当前描述的Map阶段执行的操作信息。

● Reduce Opertaor Tree:表示当前秒时的是Reduce阶段的操作信息。

Map操作树(Map Operator Tree)信息解读如下:

● TableScan:表示对关键字alias声明的结果集,这里指代student_tb_orc,进行表扫描操作。

● Statistics:表示对当前阶段的统计信息。例如,当前处理的数据行和数据量,这两个都是预估值。

● Filter Operator:表示在之前操作(TableScan)的结果集上进行数据的过滤。

● predicate:表示filter Operator进行过滤时,所用的谓词,即s_age<30and s_name like '%红%'。

● Select Operator:表示在之前的结果集上对列进行投影,即筛选列。

● expressions:表示需要投影的列,即筛选的列。

● outputColNames:表示输出的列名。

● Group By Operator:表示在之前的结果集上分组聚合。

● aggreations:表示分组聚合使用的算法,这里是count(1)。

● keys:表示分组的列,在该例子表示的是s_age。

● Reduce output Operator:表示当前描述的是对之前结果聚会后的输出信息,这里表示Map端聚合后的输出信息。

● key expressions/value expressions:MapReduce计算引擎,在Map阶段和Reduce阶段输出的都是键-值对的形式,这里key expression和valueexpressions分别描述的就是Map阶段输出的键(key)和值(value)所用的数据列。这里的例子key expressions指代的就是s_age列,value exporess指代的就是count(1)列。

● sort order:表示输出是否进行排序,+表示正序,-表示倒序。

● Map-reduce partition columns:表示Map 阶段输出到Reduce 阶段的分区列,在Hive-SQL中,可以用distribute by指代分区的列。

Reduce阶段所涉及的关键词与Map阶段的关键词是一样的,字段表示含义也相同

Reduce中出现但是在Map阶段没有出现的关键词。

● compressed:在File Output Operator中这个关键词表示文件输出的结果是否进行压缩,false表示不进行输出压缩。

● table:表示当前操作表的信息。

● input format/out putformat:分别表示文件输入和输出的文件类型。

● serde:表示读取表数据的序列化和反序列化的方式。

explain dependency

用于描述一段SQL需要的数据来源,输出是一个json格式的数据,里面包含以下两个部分的内容。

● input_partitions:描述一段SQL依赖的数据来源表分区,里面存储的是分区名的列表,格式如下:

如果整段SQL包含的所有表都是非分区表,则显示为空。

● input_tables:描述一段SQL依赖的数据来源表,里面存储的是Hive表名的列表,格式如下:

举个栗子

使用explain denpendency查看SQL查询分区表。

结果如下:

explain dependency的使用场景有两个。

场景一,快速排除。快速排除因为读取不到相应分区的数据而导致任务数据输出异常。例如,在一个以天分区的任务中,上游任务因为生产过程不可控因素出现异常或者空跑,导致下游任务引发异常。通过这种方式,可以快速查看SQL读取的分区是否出现异常。

场景二,帮助理清表的输入,帮助理解程序的运行,特别是有助于理解有多重自查询,多表连接的依赖输入。

explain authorization

获取SQL访问的数据来源(INPUTS)和数据输出(OUTPUTS),以及当前Hive的访问用户(CURRENT_USER)和操作(OPERATION)

结果如下

AUTHORIZATION_FAILURES信息,提示对当前的输入没有查询权限,但如果运行上面的SQL的话也能够正常运行。为什么会出现这种情况?Hive在默认不配置权限管理的情况下不进行权限验证,所有的用户在Hive里面都是超级管理员,即使不对特定的用户进行赋权,也能够正常查询

explain vectorization

该命令是在Hive 2.3版本之后新增的功能,可用于查看Map阶段或者Reduce阶段在运行过程中是否使用向量化模式。那什么是向量化模式?

向量化模式是Hive 的一个特性,在没有引入向量化的执行模式之前,一般的查询操作一次只处理一行,在向量化查询执行时通过一次处理1024行的块来简化系统底层操作,提高了数据的处理性能。向量化模式的开启方式如下:

set hive.vectorized.execution.enabled=true;

向量模式支持的数据类型有:

● tinyint;● smallint;● int;● bigint;● boolean;● float;● double;● decimal;● date;● timestamp;● string。

如果使用其他数据类型,如array和map等,即使是开启了向量化模式查询,查询操作也将使用标准的方式逐行执行。

1.explain vectorization only命令,表示整个执行计划将只显示向量化模式相关的描述信息,其他非向量化模式的描述都将被隐藏

demo:

结果如下:

● Execution Mode:表示当前的执行模式,vectorized表示当前模式是向量化的模式。

● Map Vectorization:表示接下来的缩进信息描述的是关于Map阶段向量化执行模式信息。

● enabled:表示该关键词所描述阶段是否已经开启向量化模式,true表示开启,false表示关闭。

● enabledConditionsMet:表示该关键词所描述阶段,开启向量化模式已经满足的条件。

● enableConditionsNotMet:表示该关键词所描述阶段,开启向量化模式未满足的条件。

● groupByVectorOutput:表示该关键词所描述的阶段,分组聚合操作是否开启向量化模式,true表示开启。

● inputFileFormats:表示该关键词所描述的阶段,输入的文件格式。

● allNative:是否都是本地操作,false表示不是。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:50:33  更:2022-08-06 10:51:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 21:51:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码