Hive explain执行计划详解
简介:HIVE提供了EXPLAIN命令来展示一个查询的执行计划,这个执行计划对于我们了解底层原理,hive 调优,排查数据倾斜等很有帮助
一、EXPLAIN 参数介绍
语法 :
EXPLAIN [EXTENDED|CBO|AST|DEPENDENCY|AUTHORIZATION|LOCKS|VECTORIZATION|ANALYZE] querySql
二、简单sum例子
2.1 执行计划查询Sql和结果
explain select sum(id) from dw.ods_bdg_db_statistics_compass_property where dt='20220627';
STAGE DEPENDENCIES:
Stage-1 is a root stage
Stage-0 depends on stages: Stage-1
STAGE PLANS:
Stage: Stage-1
Map Reduce
Map Operator Tree:
TableScan
alias: ods_bdg_db_statistics_compass_property
Statistics: Num rows: 7794 Data size: 31177 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: id (type: int)
outputColumnNames: id
Statistics: Num rows: 7794 Data size: 31177 Basic stats: COMPLETE Column stats: NONE
Group By Operator
aggregations: sum(id)
mode: hash
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
sort order:
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: bigint)
Reduce Operator Tree:
Group By Operator
aggregations: sum(VALUE._col0)
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
File Output Operator
compressed: true
Statistics: Num rows: 1 Data size: 8 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
2.2 执行计划最外层



sql是sum,所以算子是group by
2.2.2.1.3 其它操作
例1
explain
SELECT
tab1.event_id,
tab2.id
from dw.ods_bdg_db_statistics_tab1 tab1
LEFT JOIN dw.ods_bdg_db_statistics_tab2 tab2
ON tab1.property_id = tab2.id and tab1.dt=tab2.dt
WHERE tab1.dt = '20220627'
and tab1.property_id=983
例2
explain
SELECT tab1.event_id,tab2.id
FROM (select dt,event_id,property_id from dw.ods_bdg_db_statistics_tab1 where dt = '20220627' and property_id=983) tab1
LEFT JOIN dw.ods_bdg_db_statistics_tab2 tab2
ON tab1.property_id = tab2.id and tab1.dt=tab2.dt
WHERE tab1.dt = '20220627'
生成的执行计划,该例子不带子查询性能要好些
left join不带子查询例子,tab2自动带筛选条件性能还高。子查询tab2没筛选,扫描数据量大一些
STAGE DEPENDENCIES:
Stage-1 is a root stage
Stage-0 depends on stages: Stage-1
STAGE PLANS:
Stage: Stage-1
Map Reduce
Map Operator Tree:
TableScan
alias: tab1
Statistics: Num rows: 789 Data size: 82063 Basic stats: COMPLETE Column stats: NONE
Filter Operator
predicate: (property_id = 983) (type: boolean)
Statistics: Num rows: 394 Data size: 40979 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
key expressions: property_id (type: int), dt (type: string)
sort order: ++
Map-reduce partition columns: property_id (type: int), dt (type: string)
Statistics: Num rows: 394 Data size: 40979 Basic stats: COMPLETE Column stats: NONE
value expressions: event_id (type: string)
TableScan
alias: tab2
Statistics: Num rows: 7794 Data size: 31177 Basic stats: COMPLETE Column stats: NONE
Filter Operator
predicate: (id = 983) (type: boolean)
Statistics: Num rows: 3897 Data size: 15588 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
key expressions: id (type: int), dt (type: string)
sort order: ++
Map-reduce partition columns: id (type: int), dt (type: string)
Statistics: Num rows: 3897 Data size: 15588 Basic stats: COMPLETE Column stats: NONE
Reduce Operator Tree:
Join Operator
condition map:
Left Outer Join0 to 1
keys:
0 property_id (type: int), dt (type: string)
1 id (type: int), dt (type: string)
outputColumnNames: _col1, _col10
Statistics: Num rows: 4286 Data size: 17146 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: _col1 (type: string), _col10 (type: int)
outputColumnNames: _col0, _col1
Statistics: Num rows: 4286 Data size: 17146 Basic stats: COMPLETE Column stats: NONE
File Output Operator
compressed: true
Statistics: Num rows: 4286 Data size: 17146 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
Hive explain执行计划详解的更多相关文章
- MySQL性能分析, mysql explain执行计划详解
MySQL性能分析 MySQL性能分析及explain用法的知识是本文我们主要要介绍的内容,接下来就让我们通过一些实际的例子来介绍这一过程,希望能够对您有所帮助. 1.使用explain语句去查看分析 ...
- MySql——Explain执行计划详解
使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈. explain执行计划包含的信息 其中最重要的字段为:i ...
- ( 转 ) MySQL高级 之 explain执行计划详解
使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈. explain执行计划包含的信息 其中最重要的字段为:i ...
- MySQL高级 之 explain执行计划详解
使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈. explain执行计划包含的信息 其中最重要的字段为:i ...
- MySQL高级 之 explain执行计划详解(转)
使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈. explain执行计划包含的信息 其中最重要的字段为:i ...
- Mysql探索之Explain执行计划详解
前言 如何写出效率高的SQL语句,提到这必然离不开Explain执行计划的分析,至于什么是执行计划,如何写出高效率的SQL,本篇文章将会一一介绍. 执行计划 执行计划是数据库根据 SQL 语句和相关表 ...
- Hive底层原理:explain执行计划详解
不懂hive中的explain,说明hive还没入门,学会explain,能够给我们工作中使用hive带来极大的便利! 理论 本节将介绍 explain 的用法及参数介绍 HIVE提供了EXPLAIN ...
- 【夯实Mysql基础】mysql explain执行计划详解
原文地址 1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. 2).select_type列常见的有: A ...
- mysql explain执行计划详解
1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. 2).select_type列常见的有: A:simp ...
- explain 执行计划详解
id:id是一组数字,表示查询中执行select子句或操作表的顺序,如果id相同,则执行顺序从上至下,如果是子查询,id的序号会递增,id越大则优先级越高,越先会被执行. id列为null的就表是这是 ...
随机推荐
- [天坑]之qrcode二维码在app内置浏览器中无法显示问题
记录一下最近的工作难点,之一... 首先本项目使用的是qrcode-generator,市面上生成二维码的第三方库有很多qrcode.vue.qrcode.QRious等等 <div id=&q ...
- 树莓派下,打包发布能在树莓派中运行的Qt5程序和其运行环境
目标:把Qt程序部署到新的树莓派中. 平台:树莓派 工作:把Qt程序和运行环境分别打包 一.程序打包过程如下,仅供参考: 1.新建文件夹A,把程序拷贝到文件夹中. 2.使用ldd获取依赖关系,并复制到 ...
- Flutter查漏补缺2
Flutter的理念架构 Flutter架构分为三层 参考官方文档 Framework层(dart) flutter engine层(C/C++) embeder层(platform-specific ...
- 助推乡村振兴,四川农担X中电金信大数据智能风控平台彰显“榜样的力量”
在2024年3月召开的两会上,政府工作报告首次提到了要大力发展科技金融.绿色金融.普惠金融.养老金融.数字金融,为深入推进金融高质量发展,走中国特色金融发展之路指明了方向.其中,四川农担作为一家专注 ...
- 通过云主机调用API,一键训练部署商品问答模型
本文分享自华为云社区<[开发者空间实践指导]CodeArts IDE调用API训练商品问答模型>,作者:开发者空间小蜜蜂. 一.案例介绍 在电子商务领域,售前和售后服务是确保客户满意度和提 ...
- Netty有关
https://www.baeldung.com/tag/netty/ https://github.com/eugenp/tutorials https://stackoverflow.com/qu ...
- Netty中ByteBuf内存泄露及释放解析
近日在使用Netty框架开发程序中出现了内存泄露的问题,百度加调试了一番,做个整理. 直接看解决方法请移步Netty内存泄漏解决ERROR io.netty.util.ResourceLeakDete ...
- Qt编写本地摄像头综合应用示例(qcamera/ffmpeg/v4l2等)
一.功能特点 同时支持 qcamera.ffmpeg.v4l2 三种内核解析本地摄像头. 提供函数 findCamera 自动搜索环境中的所有本地摄像头设备,搜索结果信号发出. 支持自动搜索和指定设备 ...
- Qt编写物联网管理平台31-用户权限管理
一.前言 随着需求的不断变化,功能的增多,在用户信息这块,除了需要用户登录退出验证以外,还需要有个简单的用户权限逻辑处理,比如限定某些用户只有查看权限,没有删除记录.清空记录.系统设置的权限,与之相对 ...
- FFmpeg命令行示例
1 提取视频流/音频流 // 分离视频流和音频流 ffmpeg -i input_file -vcodec copy -an output_file_video ffmpeg -i input_fil ...