Explain 查看执行计划
Explain 执行计划概述
EXPLAIN
命令呈现的执行计划由一系列 Stage 组成。这些 Stage 之间存在依赖关系,每一个 Stage 可能对应一个 MapReduce Job 或者一个文件系统的操作等。如果某 Stage 对应了一个 MapReduce Job,则该 Job 在 Map 端和 Reduce 端的计算逻辑分别由 Map Operator Tree 和 Reduce Operator Tree 描述。Operator Tree 包含了一系列 Operator,每个 Operator 表示 Map 或 Reduce 阶段中的一个单独逻辑操作,如 TableScan Operator、Select Operator、Join Operator 等。
常见的 Operator 及其作用如下:
- TableScan:表扫描操作,通常在 Map 端的第一个操作是表扫描。
- Select Operator:选取操作。
- Group By Operator:分组聚合操作。
- Reduce Output Operator:输出到 Reduce 操作。
- Filter Operator:过滤操作。
- Join Operator:Join 操作。
- File Output Operator:文件输出操作。
- Fetch Operator:客户端获取数据操作。
基本语法
EXPLAIN [FORMATTED | EXTENDED | DEPENDENCY] query-sql
其中,FORMATTED
、EXTENDED
、DEPENDENCY
是可选关键字,各自的作用如下:
- FORMATTED:将以 JSON 字符串形式输出执行计划。
- EXTENDED:输出执行计划中的额外信息,通常是读写文件名等信息。
- DEPENDENCY:输出执行计划中读取的表及分区。
案例实操
1)查看以下 SQL 语句的执行计划:
hive (default)> explain
select
user_id,
count(*)
from order_detail
group by user_id;
2)执行计划如下图