[hive]执行计划

news2024/11/28 0:52:00

https://www.bilibili.com/video/BV1g84y147sX/?p=126&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=51f694f71c083955be7443b1d75165e0

一、概述

Explain呈现的执行计划,由一系列Stage组成,这一系列Stage具有依赖关系,每个Stage对应一个Mapreduce Job,或者一个文件系统的操作(select *、load,这种不走MR)。

若某个Stage对应一个MapReduce,其Map端和Reduce端的计算逻辑分别由Map Operator Tree(Map操作树)和Reduce Operator Tree(Reduce操作树)进行描述,Operator Tree由一系列的Operator组成,一个Oprator代表在Map或Reduce阶段的一个单一的逻操作。

常见的Operator如下

TableScan:表扫描操作,通常map端第一个操作肯定是扫描操作
Select Operator:选取操作
Group By Operator:分组聚合操作
Reduce Output Operator:输出到reduce操作
Filter Operator:过滤操作,如where、having
Join Oprator:jojn操作
File Output Operator:文件输出操作,输出到hdfs的临时文件
Fetch Operator:客户端获取数据操作。正常我们写一个select的sql,
               就将结果写在hdfs的一个临时目录MR正常就是从hdfs读数据,并将结果写入hdfs,
               如果idea展示数据,需要把这个临时文件拉过来查看,这个操作就是fetch.

下图是由一个执行计划绘制而成:

explain select
zheng_shi_indicator,
count(*)
from
test.test_formal_edu
group by zheng_shi_indicator

二、基本语法

explain [formatted、extended、dependency] 查询语句
注:formatted、extended、dependency关键字为可选项,各自作用如下:
formatted:将执行计划以json串的形式输出
extended:输出执行计划中的额外信息,通常是读写的临时文件名等信息
dependency:输出sql读取的表和分区(不常用)

三、例子

1、SQL

explain select
zheng_shi_indicator,
count(*)
from
test.test_formal_edu
group by zheng_shi_indicator

2、如何看执行计划

  1. 从底层Stage看

  1. Stage中先看Map Operator Tree,再看Reduce Operator Tree

  1. 操作树中一个Operator一个Operator的看,从上往下看

3、执行计划

STAGE DEPENDENCIES:--stage间的依赖关系
  Stage-1 is a root stage 
  Stage-0 depends on stages: Stage-1 --stage0依赖于stage1
  --顺序是stage1、stage0

STAGE PLANS:--每个stage具体的计划
  Stage: Stage-1
    Map Reduce
      Map Operator Tree:
          TableScan --读表
            alias: test_formal_edu --要扫描的表名,下面的信息是该表的数据量和行数,不知道为什么行数是1
            Statistics: Num rows: 1 Data size: 3119547392 Basic stats: COMPLETE Column stats: NONE
            --sql还没跑怎么知道是多少行?
            Select Operator --选取字段,根据sql语句找到需要的字段
              expressions: zheng_shi_indicator (type: string)
              outputColumnNames: zheng_shi_indicator
              Statistics: Num rows: 1 Data size: 3119547392 Basic stats: COMPLETE Column stats: NONE
              Group By Operator --可以看到在map端就已经在做group by操作了即map端聚合
                aggregations: count() --聚合函数是什么
                keys: zheng_shi_indicator (type: string) --分组的key
                mode: hash --hash模式
                outputColumnNames: _col0, _col1 --输出两个字端
                Statistics: Num rows: 1 Data size: 3119547392 Basic stats: COMPLETE Column stats: NONE
                Reduce Output Operator --输出到reduce的操作
                  key expressions: _col0 (type: string)
                  sort order: +  --shuffle时进行排序
                  --一个+表示按照一个分区字段进行升序排序 两个+号表示按照两个分区字段进行升序排序 
                  --一个+一个-表示按照第一个字段升序排序,按照第二个字段降序排序
                  Map-reduce partition columns: _col0 (type: string) --按照第一个字段进行分区
                  Statistics: Num rows: 1 Data size: 3119547392 Basic stats: COMPLETE Column stats: NONE
                  value expressions: _col1 (type: bigint)
      Execution mode: vectorized
      Reduce Operator Tree:--Reduce操作树
        Group By Operator 
          aggregations: count(VALUE._col0)
          keys: KEY._col0 (type: string)
          mode: mergepartial --部分合并,将每个map各自聚合后的结果进行汇总聚合
          outputColumnNames: _col0, _col1
          Statistics: Num rows: 1 Data size: 3119547392 Basic stats: COMPLETE Column stats: NONE
          File Output Operator --将最终的计算结果输出到hdfs
            compressed: false
            Statistics: Num rows: 1 Data size: 3119547392 Basic stats: COMPLETE Column stats: NONE
            table:
                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe

  Stage: Stage-0
    Fetch Operator --客户端获取数据的操作
      limit: -1
      Processor Tree:
        ListSink

4、图

说明

1、Stage1:有Map也有Reduce所以是一个MR

1)Map Operator Tree:描述Map端的具体操作,有如下操作

①tablescan:读表

②select operator:select

③group by operator:group by

④reduce output operator(往reduce发送数据)

2)Reduce Operator Tree:描述Reduce端的具体操作

①Group By Operator:group by

②File Output Operator:输出最终结果到hdfs的临时文件中

Stage0:只有Map。Fetch Operator客户端拉取操作)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/402452.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Easy Deep Learning——全连接层

什么是全连接层?它的作用是什么? 我们还是回到之前的草地场景中,假设现在的问题变成让机器判断该草地上是不是有一只猫存在,由于之前做的卷积操作,将草地分成了许多网格,如果场地上只有一只猫,那么只有一个网格是有猫的,而其他的网格都不存在猫,一个卷积核运算可以得到…

java-泛型介绍

介绍 泛型是jdk5的时候出现的一种特性,可以在编译阶段约束操作的数据结构,并进行检查。 泛型只能用引用数据类型,如果是基本数据类型得使用包装类。 如ArrayList中的toArray(T[] a),是不可用转换为int[]的只能转换为Integer[] 好处 统一了…

Mysql的数据存储

Mysql的数据存储 对于mysql而言,数据是存储在文件系统中的,不同的存储存储引擎会有不同的文件格式和组织形式 1、InnoDB数据存储 InnoDB存储格式由大到小:表空间 → 段 → 区 → 页 → 行 对于innodb而言,数据是存储在表空间&…

linux系统整理一些工作中常用关于用户,用户组以及文件权限操作的相关命令

文章目录问题:前言:用户和用户组概念前言一、用户前言二、用户组一、添加用户和用户组二、查看用户所属组命令、三、管理用户组方法一、gpasswd命令方式二、newgrp命令方式三、usermod命令用户组实战:赋予用户root权限四、文件修改权限命令ch…

数字孪生与 UWB 技术创新融合:从单点测量到全局智能化

人员定位是指利用各种定位技术对人员在特定场所的位置进行准确定位的技术。人员定位技术主要应用于需要实时监控、管理和保障人员安全的场所,如大型厂区、仓库、医院、学校、商场等。人员定位技术的应用范围非常广泛,例如:-在工厂生产线上&am…

服务器Nginx安装实战

因为Vue项目发布在Tomcat中出现跨域为,所以需要Nginx进行反向代理,所以特此在云服务器中安装Nginx,本文章记录安装过程及解决安装过程中的错误处理。 一、Nginx 安装 登录服务器后,执行命令 yum info gcc-c pcre pcre-devel zl…

keras lstm

keras lstm的参数(1)units:LSTM层的单元个数,即LSTM网络中隐藏节点的数量。(2)activation:激活函数,用于更新内部状态的函数(即门的决策函数)。(3…

dotConnect Universal 4.0.134 Crack

dotConnect Universal 能够呈现和访问不同于Microsoft 和框架的数据库的信息。网。它能够支持大多数数据库服务器以及 Microsoft Access、Oracle、MySQL、DB2、PostgreSQL、SQLite、InterBase、FireBird,最后是 Microsoft SQL Server。它可以通过 ODBC、OLE DB、ADO…

我来跟你讲vue进阶

一、组件(重点) 组件(Component)是 Vue.js 最强大的功能之一。 组件可以扩展 HTML 元素,封装可重用的代码。 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象…

ThreadLocal 的简单使用并深扒其实现原理

在多线程环境下, 如果想要保证每个线程都能独立于其它线程独自运行, 可以使用 ThreadLocal 来解决; ThreadLocal 就是用于提供线程局部变量的一个工具, 也就是说 ThreadLocal 可以为每个线程创建一个单独的变量副本; 其概念与同步机制正好相反, 同步机制是保证多线程环境下数据…

elasticSearch写入原理

elasticSearch写入原理 最近学习完了es相关的课程整理除了es的核心内容,学习这东西知其然知其所以然,自己按照自己的理解整理了es相关的面试题。先热个身,整理一下es的写入原理,有不对的地方请大家指正。 这些原理的东西我觉得还是…

MySql数据库(进阶篇)

👌 棒棒有言:人生总是在前行,不论走到哪里,只要带着信念往前走,比别人多一点努力,你就会多一份成绩;比别人多一点志气,你就会多一份出息;比别人多一点坚持,你…

js学习3(数组)

目录 结构图 数组操作 每日一练 结构图 数组操作 ## 数组中可以存储任何类型元素 ## 创建: 字面量([...])、创建对象(new Array(arr_len)) ## 遍历: 循环遍历、forEach(callback)、map(callback)、filter(callback)、every(callback)、some(callback)、…

1637_fgets函数的功能

全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 没想到分析一个函数的实现会这么麻烦,中间利用的一系列的库函数以及内核接口我全都不熟悉。但是,这次的这个函数应该是之前C语言的基本教程…

vscode下载与使用

1.vscode下载 官网下载地址:Download Visual Studio Code - Mac, Linux, Windows下载太慢,推荐文章:解决VsCode下载慢问题_vscode下载太慢_迷小圈的博客-CSDN博客下载太慢,推荐下载链接:https://vscode.cdn.azure.cn/s…

JavaScript Array(数组)对象

数组对象的作用是:使用单独的变量名来存储一系列的值。参数参数 size 是期望的数组元素个数。返回的数组,length 字段将被设为 size 的值。参数 element ...; elementn 是参数列表。当使用这些参数来调用构造函数 Array() 时,新创建的数组的元…

SEO技术风口来了|SEO能否抓住全球约93%的网络用户?

开篇词作者/出品人 | 美洽 SEO 流量专家 白桦为什么要做一个 SEO 专栏?在一部分人眼中,SEO(搜索引擎优化)已经是老掉牙的玩意儿,在这个信息爆炸的年代,它似乎已经无法承担吸引流量的主要作用。但&#xff…

2023年3月北京/广州/杭州/深圳数据治理工程师认证DAMA-CDGA/CDGP

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

代码随想录算法训练营第二十四天 | 理论基础、 77. 组合

打卡24天,今天学第七章回溯算法,之前已经学过一遍,现在学第二遍,加油。 今日任务 理论基础77.组合 理论基础 什么是回溯 递归的副产物,有递归就会有回溯 红色的箭头就是回溯 回溯的效率 回溯的本质是穷举&#xff…

ROS通信机制

参考: bilibiliAutolabor官方 回调函数:! 由外部中断激发而执行的函数,函数执行的时间不由函数本身控制,而是由外部激发 1、话题通信 ​ publisher发布者,和subscriber订阅者通过topic相互连接&#xf…