Hive的Explain命令

Hive的Explain命令,用于显示SQL查询的执行计划。

Hive查询被转化成序列阶段(这是一个有向无环图)。这些阶段可能是mapper/reducer阶段,或者是Metastore或文件系统的操作,如移动和重命名的阶段。

例子

hive> explain
    > select * from student
    > cluster by age;

1.查询的抽象语法树。【本人使用hive-0.13,没有显示抽象语法树】

2.执行计划计划的不同阶段之间的依赖关系

OK
STAGE DEPENDENCIES:
  Stage-1 is a root stage
  Stage-0 is a root stage

3.每个场景的描述

STAGE PLANS:
  Stage: Stage-1
    Map Reduce
      Map Operator Tree:        //发生在job的 map 处理阶段过程
          TableScan
            alias: student      //TableScan以 Studen 表作为输入
            Statistics: Num rows: 0 Data size: 74 Basic stats: PARTIAL Column stats: NONE
            Select Operator
              expressions: age (type: int), name (type: string)
              outputColumnNames: _col0, _col1
              Statistics: Num rows: 0 Data size: 74 Basic stats: PARTIAL Column stats: NONE
              Reduce Output Operator
                key expressions: _col0 (type: int)
                sort order: +
                Map-reduce partition columns: _col0 (type: int)
                Statistics: Num rows: 0 Data size: 74 Basic stats: PARTIAL Column stats: NONE
                value expressions: _col0 (type: int), _col1 (type: string)
      Reduce Operator Tree:      //发生在job的 reduce 处理阶段过程
        Extract
          Statistics: Num rows: 0 Data size: 74 Basic stats: PARTIAL Column stats: NONE
          File Output Operator
            compressed: false
            Statistics: Num rows: 0 Data size: 74 Basic stats: PARTIAL Column stats: NONE
            table:
                                //说明输入格式是TextInputFormat
                input format: org.apache.hadoop.mapred.TextInputFormat
                                //说明输出格式是HiveIgnoreKeyTextOutputFormat
                output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe

  Stage: Stage-0
    Fetch Operator
      limit: -1                    //--job中没有Limit 

Time taken: 0.085 seconds, Fetched: 36 row(s)
时间: 2025-01-08 16:55:21

Hive的Explain命令的相关文章

【MySQL笔记】SQL优化利器 - explain命令的输出格式详解

有MySQL使用经验的同学在实际项目中可能会遇到SQL慢查询的场景,有些场景很容易定位问题所在(如单表操作有慢查询SQL时,仔细check SQL语句通常很容易定位索引问题),而有些复杂业务场景下(如多表联合查询几十个字段并做group或sort等操作),人工check SQL语句通常很难发现SQL瓶颈根源.这个时候,MySQL提供的explain命令就派上用场了. 本笔记主要对explain的输出结果做说明,并给出根据explain输出对SQL做优化的思路. 1. EXPLAIN语法及用途 e

hive经常使用命令

hive经常使用命令 show tables; 列出hive里面全部数据表名 desc userProfile; 显示数据表userProfile的基本表字段及字段type desc extended trackinfo; 显示数据表trackinfo的具体信息,包含字段说明,数据表等 /usr/local/cloud/hive/bin/hive 进入hive数据库 select attribute_name from pms_attribute where attribute_id=21000

Mysql中explain命令查看语句执行概况

Mysql中可以使用explain命令查看查询语句的执行方式,使用方法举例:explain + 查询语句 例如:explain select * from user_info 几个重要的字段说明: table:此次查询操作是关联哪张数据表 type:连接查询操作类型,一般根据索引查询的话为const,如果没有索引,则遍历所有数据那么为All(此种方式效率极低) possible_keys:显示可能应用在这张表中的索引.如果为空,没有可能的索引. key: 实际使用的索引.如果为NULL,则没有使

mysql explain 命令解释

转载http://bzyyc.happy.blog.163.com/blog/static/6143064720115102551554/ key实 际使用的索引.如果为NULL,则没有使用索引.很少的情况下,MYSQL会选择优化不足的索引.这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引 key_len使用的索引的长度.在不损失精确性的情况下,长度越短越好 mysql

MySQL中EXPLAIN命令详解

explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了: 如: explain select surname,first_name form a,b where a.id=b.id EXPLAIN列的解释: table:显示这一行的数据是关于哪张表的 type:这是重要的列,显示连接使用了何种类型.从最好到最差的连接类型为const.eq_reg.ref.range.in

EXPLAIN 命令详解

在工作中,我们用于捕捉性能问题最常用的就是打开慢查询,定位执行效率差的SQL,那么当我们定位到一个SQL以后还不算完事,我们还需要知道该SQL的执行计划,比如是全表扫描,还是索引扫描,这些都需要通过EXPLAIN去完成.EXPLAIN命令是查看优化器如何决定执行查询的主要方法.可以帮助我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用.需要注意的是,生成的QEP并不确定,它可能会根据很多因素发生改变.MyS

MySQL的Explain命令

Explain命令是查看查询优化器如何决定执行查询的主要办法. 调用 EXPLAIN 要使用EXPLAIN,只需在查询中的SELECT关键字之前增加EXPLAIN.MySQL会在查询上设置一个标记.当执行查询时,这个标记会使其返回关于在执行计划中每一步的信息,而不是执行它(一般情况下).它会返回一行或多行信息,显示出执行计划中的每一部分和执行的次序. explain select 1结果示例: 在查询中每个表在输出中只有一行.如果查询是两个表的连接,那么输出中将有两行.别名表单算为一个表.如果把

【MySQL】EXPLAIN命令详解

具体参考: https://www.cnblogs.com/gomysql/p/3720123.html 原文如下: 在工作中,我们用于捕捉性能问题最常用的就是打开慢查询,定位执行效率差的SQL,那么当我们定位到一个SQL以后还不算完事,我们还需要知道该SQL的执行计划,比如是全表扫描,还是索引扫描,这些都需要通过EXPLAIN去完成.EXPLAIN命令是查看优化器如何决定执行查询的主要方法.可以帮助我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及

hive\hadoop 常用命令

-1------ 后台跑程序语句: 在shell下输入: nohup hive -f  aaa.sql >bbb.log 2>&1 & 然后把sql 的脚本导入服务器上:Transfer-Zmodem upload List 相关命令:jobs:可以看到运行的任务,:cat bbb.log 可以看到这个任务运行情况 ====2================ 文件传输: 打印列名语句:set hive.cli.print.header=true; set hive.groupb