Hive版本: hive-1.1.0-cdh5.14.2

用户提交HiveQL查询后,Hive会把查询语句转换为MapReduce作业。Hive会自动完成整个执行过程,一般情况下,我们并不用知道内部是如何运行的。但当查询遇到性能瓶颈时,就需要对HiveQL进行调优。
EXPLAIN是调优时查看执行计划的工具,执行计划可以清晰的告诉我们查询的stage、map、reduce等阶段的信息。
EXPLAIN的使用非常简单,只需要在正常HiveQL前面加上就可以了。
此时的HiveQL不会真正执行作业,只是基于代价优化器(CBO)生成了最优的执行路径。
例如,使用EXPLAIN查看一条聚合HiveQL的执行计划:

0: jdbc:hive2://node03:10000> explain select avg(age) from youtubevideo_orc;

执行计划分为两部分:

  1. stage依赖(STAGE DEPENDENCIES)
  2. stage详细执行计划(STAGE PLANS)

第一部分:STAGE DEPENDENCIES

这部分展示本次查询分为两个stage:Stage-1,Stage-0.
一般Stage-0是最终给查询用户展示数据用的,如LIMITE操作就会在这部分。
Stage-1是mr程序的执行阶段。

第二部分:STAGE PLANS

1. Stage-1

Stage-1包含了整个查询的大部分处理过程,且会触发一个MapReduce job。
(1) Map阶段
TableScan以youtubevideo_orc表为输入,显示表中有743569行数据;

注意:如果没有对表收集统计信息,743569只是CBO的推测,并非表的真正数据量。
可以使用如下语句收集表的统计信息:
ANALYZE TABLE [db_name.]tablename [PARTITION(partcol1[=val1], partcol2[=val2], …)] – (Note: Fully support qualified table name since Hive 1.2.0, see HIVE-10007.)
COMPUTE STATISTICS
[FOR COLUMNS] – (Note: Hive 0.10.0 and later.)
[CACHE METADATA] – (Note: Hive 2.1.0 and later.)
[NOSCAN];

本次执行的是SELECT查询,查询列是age,列类型为int;
avg是聚合操作,触发了Group By操作,这部分也可以看出执行的是avg(age),且产生一个中间临时结果_col0。

(2) Reduce阶段
会看到和Map阶段相同的Group By操作,不过这次是作用在map阶段产生的中间临时结果_col0上;
File Output Operator展示了最终输出阶段的详细信息,包括:

  1. compressed 输出是否压缩;
  2. Statistics 输出的统计信息:行数、大小等;
  3. input format 文件输入调用的Java类,显示以文本Text格式输入;
  4. output format 文件输出调用的java类,显示以文本Text格式输出;
  5. serde Hive表使用的Serde类型;

2. Stage-0

Stage-0是查询结果展示阶段,因为我们的查询语句没有LIMIT,所以显示为 -1。

总结

EXPLAIN生成HiveQL的执行计划,是调优的重要工具;
EXPLAIN EXTENDED能生成更加详细的执行计划,读者可以自行比较二者差异;

【Hive】性能调优 - EXPLAIN相关推荐

  1. 3万字史诗级 Hive 性能调优(建议收藏)

    前言 Hive 作为大数据领域常用的数据仓库组件,在平时设计和查询的时候要特别注意效率 .影响 Hive 效率的几乎从不是数据量过大,而是数据倾斜.数据冗余.Job或I/O过多.MapReduce 分 ...

  2. Hive性能调优实战 分享

    获取方式 链接:https://pan.baidu.com/s/1TmkWssL1K45af7GDrj2QWw 提取码:26uv 关注我的公众号[宝哥大数据],更多干货 目录 第1章 举例感受Hive ...

  3. hive性能调优实战pdf_Nginx 性能调优实战

    来自:Linux社区 1.Nginx运行工作进程数量 Nginx运行工作进程个数一般设置CPU的核心或者核心数x2.如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpui ...

  4. hive性能调优实战pdf_1分钟带你入门JVM性能调优,实战解析调优工具

    JVM的运行参数 1.1 三种参数类型 标准参数 help -version -X参数 (非标准参数) -Xint -Xcomp -XX参数(使用率比较高, 常用语jvm调优) -XX:newSize ...

  5. 【大数据开发】SparkSQL——Spark对接Hive、Row类、SparkSQL函数、UDF函数(用户自定义函数)、UDAF函数、性能调优、SparkSQL解决数据倾斜

    文章目录 一.Spark对接Hive准备工作 1.1 集群文件下载 1.2 导入依赖 1.3 打开集群metastore服务 二.Spark对接Hive 2.1 查询Hive 2.2 读取MySQL中 ...

  6. 真正让你明白Hive参数调优系列1:控制map个数与性能调优参数

    本系列几章系统地介绍了开发中Hive常见的用户配置属性(有时称为参数,变量或选项),并说明了哪些版本引入了哪些属性,常见有哪些属性的使用,哪些属性可以进行Hive调优,以及如何使用的问题.以及日常Hi ...

  7. 全方位揭秘!大数据从0到1的完美落地之Hive企业级调优

    Hive企业级调优 调优原则已经在MR优化阶段已经有核心描述,优化Hive可以按照MR的优化思路来执行 优化的主要考虑方面: 环境方面:服务器的配置.容器的配置.环境搭建 具体软件配置参数: 代码级别 ...

  8. hbase原理与实践_HBase 性能调优第一弹:内存篇

    这是使用 HBase 最不可避免的一个话题,就是 HBase 的性能调优,而且通常建立在我们对 HBase 内部运行机制比较了解的基础上进行的,因此无论怎么说,调优这块都是一个相对复杂的事情.这一篇我 ...

  9. MySQL 开发日志 -- 性能调优

    * mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];选项解析:IN 'log_n ...

最新文章

  1. Git,Github和Gitlab简介和使用方法
  2. cbow word2vec 损失_Skip-gram和CBOW知识点
  3. java 通过JLayeredPane实现背景图上添加其他控件
  4. 详解图像处理的算术运算与逻辑运算
  5. 【前端】—每日5道面试题打卡(十六)
  6. python从入门到放弃表情图-Python 从入门到放弃(一)
  7. 在阿里云容器服务中使用定时任务
  8. java垃圾收集算法、标记-清除算法、复制算法、标记-整理清除、分代收集算法
  9. finereport java无符合资料_Java报表工具FineReport常见的数据集报错错误代码和解释...
  10. 创业感悟:有舍才会得,舍得才见风景
  11. Word分栏出现空白怎么解决
  12. @property基本概念
  13. 【Unity】用Lerp()实现类杀戮尖塔手牌变化
  14. 算例在线帮 | 某型无厚度翅片水冷板散热的Fluent仿真分析
  15. 闭关之 C++ Template 笔记(一):PartⅠ基本概念(一)
  16. uniapp 小于1000 按原数字显示 超过1000 数字换算成10w+ 1.3k+ 显示
  17. 什么是OTG,手机OTG的用途
  18. 网易邮箱中非常实用的工具,手机、IP等归属地
  19. set -ex是什么意思?
  20. win10 网络突然连不上,解决办法

热门文章

  1. 软中断网卡处理Linux高性能外部设备处理机制SMP
  2. 开启了ADB,就等于配了一把家门钥匙给别人!
  3. 设计模式原则之四:迪米特法则
  4. Java网络编程(一)- 一个简单的服务端/客户端应用程序
  5. 悟透delphi 第十章 操作界面与操作逻辑
  6. mysql_affected_rows mysqli_关于mysqli_affected_rows()函数的详细介绍
  7. echo字符集 shell_Shell echo命令:输出字符串
  8. html input 字体颜色_HTML常用标签汇总
  9. cpu频率_CPU频率被锁定到800mhz怎么办?
  10. oralce11g RAC 启动后 CRS-0184: Cannot communicate with the CRS daemon.