hive执行计划语法
EXPLAIN [EXTENDED] query
EXTENDED参数:输出执行计划中操作符的额外信息;通常,展示物理信息,如文件名等
hive查询转换为一个 有向无环图 的阶段序列;这些阶段可能是 Map/Reduce阶段 或者是执行元数据与文件操作(例如:重命名,移动); explain 输出包括三部分:
- 查询语句的抽象语法树
- 执行计划不同阶段间的依赖关系
- 每个阶段的描述
阶段描述信息以操作符和与其相关元数据来显示 操作序列;操作符元数据有以下东西组成,像 FilterOperator 的过滤表达式;SelectOperator 的 选择表达式;FileSinkOperator 的输出文件名
执行计划语法介绍到此结束,下面给出一个例子。
执行计划示例
EXPLAIN
FROM src INSERT OVERWRITE TABLE dest_g1 SELECT src.key, sum(substr(src.value,4)) GROUP BY src.key;
执行计划输出如下:
抽象语法树:
ABSTRACT SYNTAX TREE:
(TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest_g1)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 4)))) (TOK_GROUPBY (TOK_COLREF src key))))
阶段依赖关系图:
STAGE DEPENDENCIES:
Stage-1 is a root stage
Stage-2 depends on stages: Stage-1
Stage-0 depends on stages: Stage-2
stage-1 是 root 阶段
stage-2在stage-1执行完后执行
stage-0在stage-2执行结束后执行
各阶段执行计划
STAGE PLANS:
Stage: Stage-1
Map Reduce
Alias -> Map Operator Tree:
src
Reduce Output Operator
key expressions:
expr: key
type: string
sort order: +
Map-reduce partition columns:
expr: rand()
type: double
tag: -1
value expressions:
expr: substr(value, 4)
type: string
Reduce Operator Tree:
Group By Operator
aggregations:
expr: sum(UDFToDouble(VALUE.0))
keys:
expr: KEY.0
type: string
mode: partial1
File Output Operator
compressed: false
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.mapred.SequenceFileOutputFormat
name: binary_table
Stage: Stage-2
Map Reduce
Alias -> Map Operator Tree:
/tmp/hive-zshao/67494501/106593589.10001
Reduce Output Operator
key expressions:
expr: 0
type: string
sort order: +
Map-reduce partition columns:
expr: 0
type: string
tag: -1
value expressions:
expr: 1
type: double
Reduce Operator Tree:
Group By Operator
aggregations:
expr: sum(VALUE.0)
keys:
expr: KEY.0
type: string
mode: final
Select Operator
expressions:
expr: 0
type: string
expr: 1
type: double
Select Operator
expressions:
expr: UDFToInteger(0)
type: int
expr: 1
type: double
File Output Operator
compressed: false
table:
input format: org.apache.hadoop.mapred.TextInputFormat
output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
serde: org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDe
name: dest_g1
Stage: Stage-0
Move Operator
tables:
replace: true
table:
input format: org.apache.hadoop.mapred.TextInputFormat
output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
serde: org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDe
name: dest_g1
上例中,包含两个map/reduce 阶段(stage-1,stage-2),一个文件系统相关阶段(stage-0).stage-0将结果从临时目录移动到dest_g1表相应的目录下;
一个Map/Reduce阶段有两部分组成:
- 从表别名到Map Operator Tree映射:该映射通知Mapper,其操作树被调用来处理特定表的行或者前一个Map/Reduce阶段的输出数据;上例stage-1中,src表的行被以Reduce Output Operator为根的操作符树处理;在stage-2中,stage-1输出行被stage2中以Reduce Output Operator为根的操作符树处理;这两个Reduce Output Operator 根据元数据中展示条件 分区数据到Reducers
- Reduce Operator Tree:处理Map/Reduce Job 中Reducers所有数据行;在stage-1中, Reducer Operator Tree执行部分聚合;在stage-2中, Reducer Operator Tree从stage-1的部分聚合结果计算最终聚合结果
hive执行计划作用
分析作业执行过程,优化作业执行流程,提升作业执行效率;例如,数据过滤条件从reduce端提前到map端,有效减少map/reduce间shuffle数据量,提升作业执行效率;
提前过滤数据数据集,减少不必要的读取操作;例如: hive join 操作先于 where 条件顾虑,将 分区条件放入 on语句中,能够有效减少 输入数据集;
分享到:
相关推荐
然而,对于复杂的Hive查询,理解其执行计划有时会变得相当困难,这就是Hive执行计划可视化工具的作用。这些工具通过图形化的方式展示查询的执行流程,帮助用户更好地理解性能瓶颈和优化查询。 标题中的“Hive执行...
本文将深入探讨如何通过分析SQL语句的执行计划来实现这一目标。执行计划是数据库管理系统(DBMS)执行SQL语句的详细步骤,它揭示了数据的检索路径、使用的索引、排序和连接操作等信息。了解这些信息可以帮助我们找出...
该参数决定了Hive执行计划的路径,会在程序中自动进行设置,默认值为null。 17. hive.exec.submitviachild 该参数决定了map/reduce Job是否应该使用各自独立的JVM进行提交(Child进程),默认情况下,使用与HQL ...
二、Hive执行原理 1. **编译与优化**:HQL被转化为一个抽象语法树(AST),然后经过词法分析、语法分析和优化,生成执行计划。 2. **逻辑优化**:包括消除冗余操作、选择最佳执行路径、合并JOIN操作等。 3. **...
这个压缩包文件"hive执行文件.zip"可能包含用于运行或更新Hive环境的必要组件,尤其是"bin"目录,这是Hive命令行工具和可执行文件所在的地方。"readme.txt"通常会提供关于如何安装、配置或使用这些文件的说明。 当...
4. **优化器**:Hive的CBO(Cost-Based Optimizer)根据数据统计信息和资源成本估算最优执行计划,包括选择最佳的JOIN顺序、分桶和分区等。 5. **执行引擎**:Hive可以使用多种执行引擎,如Tez和Spark,它们能提供...
### HiveSQL执行计划详解 #### 一、前言 在大数据处理领域,Hive作为一款广泛使用的数据仓库工具,提供了高效的数据查询与分析能力。为了更深入地理解HiveSQL的执行过程,掌握其执行计划变得尤为重要。执行计划是...
- **含义**:指定Hive执行计划的路径,通常在程序中自动设置。 - **默认值**:`null` - **建议设置**:无需手动设置。 16. **hive.exec.submitviachild** - **含义**:控制map/reduce job是否应该使用各自的...
hive执行过程,便于初学者尽快掌握hive开发所需知识和技能。
windows10下安装hive2.3.3的时候,无法执行hive命令,原因是官方下载文件中缺少可执行文件(好多个cmd文件),安装的时候无法执行成功。下载后,解压替换hive的bin目录即可执行成功。
在Windows环境下,Hive的使用需要特定的配置和执行文件。以下是对标题和描述中涉及的知识点的详细解释: 1. **Hive在Windows上的安装**: - Hive通常在Linux环境下运行,但在Windows上也可以通过安装Java环境和...
这个组件负责解析 SQL 查询,生成执行计划,并协调与 Hadoop 集群的交互以执行这些计划。它还包括了用于数据处理的逻辑和与 Hadoop 组件(如 MapReduce、Tez 或 Spark)的集成。 具体来说,hive-exec 可能包括以下...
"HIVE安装及详解" HIVE是一种基于Hadoop的数据...* 使用HIVE命令行工具执行查询 * 使用HIVE API开发应用程序 * 使用HIVE与其他工具集成 HIVE是一种功能强大且灵活的数据仓库工具,广泛应用于大数据分析和处理领域。
以下将详细介绍如何在Python环境中执行Hive查询和管理Hive脚本。 1. **直接执行Hive SQL脚本** 可以使用`os`模块的`popen`函数直接执行存储在本地的.sql文件。例如: ```python import os hive_cmd = "hive ...
【标题】:“Windows环境下Hive的可执行文件” 在Windows操作系统中使用Apache Hive,你需要一个兼容的可执行文件集,以便能够与Hadoop生态系统交互。Hive是一个基于Hadoop的数据仓库工具,它允许用户通过SQL-like...
在某些情况下,Hive执行脚本或查询的速度可能会变得非常慢。 1. **原因分析**: - Hadoop集群中可能存在其他服务运行,这些服务可能会占用大量的计算资源。 - 主节点的选择可能会对性能产生影响。 - **解决步骤*...
(2)编译器(Physical Plan):将AST编译生成逻辑执行计划。 (3)优化器(Query Optimizer):对逻辑执行计划进行优化。 (4)执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是...
此外,Hive 1.1.0版本引入了多项改进,例如优化的查询执行计划、对ACID(原子性、一致性、隔离性、持久性)事务的支持以及增强的错误处理机制等。 总的来说,Hive驱动1.1.0是连接和操作Hadoop集群上的Hive数据仓库...
6. **查询重写**:Hive支持查询重写,通过元数据和统计信息自动优化查询计划。 **五、总结** TPCDS测试是对Hive数据仓库性能的全面评估,涉及多个层面的技术细节。通过这个过程,可以深入理解Hive在大数据环境下的...
4. **Hive Execution Engine**:这部分jar包包含Hive的执行引擎,它负责将编译后的查询计划转化为MapReduce或Tez或Spark的任务,以便在Hadoop集群上执行。 5. **Hadoop相关依赖**:由于Hive是构建在Hadoop之上的,...