Hive SQL语句执行顺序
发布网友
发布时间:2022-10-10 10:46
我来回答
共1个回答
热心网友
时间:2023-10-08 16:01
Hive 中 sql 语句的执行顺序如下:
from .. where .. join .. on .. select .. group by .. select .. having .. distinct .. order by .. limit .. union/union all
下面我们通过一个 sql 语句分析下:
上面这条 sql 语句是可以成功执行的,我们看下它在 MR 中的执行顺序:
Map 阶段:
Rece 阶段:
上面这个执行顺序到底对不对呢,我们可以通过 explain 执行计划来看下,内容过多,我们分阶段来看。
我们看到 Stage-5 是根,也就是最先执行 Stage-5,Stage-2 依赖 Stage-5,Stage-0 依赖 Stage-2。
图中标 ① 处是表扫描操作,注意先扫描的 b 表,也就是 left join 后面的表,然后进行过滤操作(图中标 ② 处),我们 sql 语句中是对 a 表进行的过滤,但是 Hive 也会自动对 b 表进行相同的过滤操作,这样可以减少关联的数据量。
先扫描 a 表(图中标 ① 处);接下来进行过滤操作 idno > '112233'(图中标 ② 处);然后进行 left join,关联的 key 是 idno(图中标 ③ 处);执行完关联操作之后会进行输出操作,输出的是三个字段,包括 select 的两个字段加 group by 的一个字段(图中标 ④ 处);然后进行 group by 操作,分组方式是 hash(图中标 ⑤ 处);然后进行排序操作,按照 idno 进行正向排序(图中标 ⑥ 处)。
首先进行 group by 操作,注意此时的分组方式是 mergepartial 合并分组(图中标 ① 处);然后进行 select 操作,此时输出的字段只有两个了,输出的行数是 30304 行(图中标 ② 处);接下来执行 having 的过滤操作,过滤出 count_user>1 的字段,输出的行数是 10101 行(图中标 ③ 处);然后进行 limit *输出的行数(图中标 ④ 处);图中标 ⑤ 处表示是否对文件压缩,false 不压缩。
*最终输出的行数为 10 行。
通过上面对 SQL 执行计划的分析,总结以下几点:
hive sql执行顺序与mysql执行顺序
Hive SQL 执行顺序如下:先Map阶段:from .. where .. join .. on .. select .. group by 再reduce阶段:select .. having .. distinct .. order by .. limit .. union/union all Mysql 中sql执行顺序如下:from(tableA)->on->join->where -> group by ->having->select->distinct->...
Hive SQL语句执行顺序
Hive 中 sql 语句的执行顺序如下:from .. where .. join .. on .. select .. group by .. select .. having .. distinct .. order by .. limit .. union/union all 下面我们通过一个 sql 语句分析下:上面这条 sql 语句是可以成功执行的,我们看下它在 MR 中的执行顺序:Map 阶段 ...
详解HiveSQL执行计划
查看执行计划的基本方法是在SQL语句前加入关键字`explain`。Hive提供的执行计划信息主要包括以下几点:查看执行计划的命令使用使用语法:在Hive CLI中输入`explain`命令,例如在Hive 2.3.7版本中输入`explain`命令,可获取查询的执行计划。Hive查询的执行流程一个Hive查询会被转换为一个包含多个stage的序列(...
大数据 Hive 类Sql语法大全,Hql Join语法详解
Hive SQL语法是基于MapReduce的底层执行机制,它将HQL语句解析为执行逻辑,通过一系列步骤产生结果。执行流程包括:首先,map阶段通过from加载并筛选表,接着where进行条件过滤,然后select确定输出项,group by阶段进行分组并计算相关函数,map端文件合并后,数据进入reduce阶段进行group by、select和排序,最后...
万字长文详解HiveSQL执行计划
一、前言 Hive SQL执行计划是理解SQL程序执行流程的关键。它揭示了SQL在转换为相应计算引擎执行逻辑的过程,掌握执行逻辑有助于识别程序瓶颈并针对性优化。此外,执行计划能揭示看似等价或不等价的SQL语句,使开发者更精准地进行优化。查看执行计划的基本方法是使用explain命令,只需在查询语句前加上此关键字...
详解HiveSQL执行计划
查看执行计划的命令与参数Hive的`explain`命令用于展示查询的详细执行计划,这对于优化和理解查询性能至关重要。通过在SQL语句前加上`explain`,如:sqlexplain SELECT * FROM table;我们可以得到一个包含多个阶段(Stage)和操作(Operator)的执行逻辑图。执行计划的结构与解读执行计划通常分为stage ...
sql如何查找某一数据在哪一列,并删除这一列?
Hive SQL查询执行顺序为:from、where、group(含聚合)、having、order、select。这意味着聚合语句优先于having子句执行,而where子句执行优先于聚合语句。理解这些查询执行规则对于编写高效SQL语句至关重要。高级查询功能包括SORT/ORDER/CLUSTER/DISTRIBUTE BY。ORDER BY用于对结果进行排序,CLUSTER BY则根据指定...
在shell中使用hiveSQL的注意事项
运行hiveSQL的方式主要有三种:交互式命令行、使用-hive-e方式和使用-hive-f方式。在交互式命令行下,直接在shell中使用hive命令,输入"hive>"进入hive环境,输入hiveSQL进行查询,语句间用英文分号隔开,适合于快速查询或调试较短的SQL语句。使用-hive-e方式时,将SQL语句放入引号内执行,适用于较长的...
hive如何同时执行多段sql
hive sql放到文件当中,之后 hive -f filename执行
如何查看hive的执行计划,并从执行计划中发现性能上的瓶颈?
要查看执行计划,只需在SQL查询前添加“explain”关键字。二、执行计划的用法 使用explain命令查看执行计划,了解底层原理、优化Hive操作和排查数据倾斜等问题。1. 案例解析 (1)Join语句如何处理NULL值?执行查询并查看结果,发现执行计划包含“id is not null”条件,说明在Join时会自动过滤掉关联字段为...