Hive 的Stage如何划分?

Hive的任务由Stage组成,复杂查询可能导致更多Stage。Stage的划分在物理计划生成阶段,包括MapReduce任务、抽样、合并等。优化器可能消除某些Stage。启用特定设置可查看执行计划。并行执行允许同时运行无依赖关系的Stage。
摘要由CSDN通过智能技术生成

Hive 的Stage如何划分,也是Hive SQL需要优化的一个点,这个问题,我也是在实际的工作中遇到的。所以我查询了网络的解答并记录下来,以便日后复习。以下是主要内容,enjoy~~~

一个 Hive 任务会包含一个或多个 stage,不同的 stage 间会存在着依赖关系,越复杂的查询通常会引入越多的 stage (而 stage 越多就需要越多的时间时间来完成)。

用户提交的 Hive QL 经过词法、语法解析后得到 AST 。语义分析器遍历 AST 抽象出 QueryBlock 。逻辑计划生成器遍历 QueryBlock ,将它们翻译为 Operator(这些 Operator 就是 Hive 对计算抽象出来的算子)生成 OperatorTree 。逻辑计划优化器对 OperatorTree 进行变换,得到优化后的 OperatorTree (即重写了逻辑执行计划)。物理计划生成器遍历 OperatorTree ,翻译为用计算引擎作业任务描述的物理执行计划 TaskTree 。物理计划优化器再对 TaskTree 进行变换,生成最终物理执行计划,以提交给计算引擎执行。

stage 的划分发生在物理计划生成器将 OperatorTree 转化为 TaskTree 的阶段。基本上是按深度优先遍历 OperatorTree ,根据计算引擎的 Compiler 的规则,生成相应的 Task 。

一个 stage 可以是一个 MapReduce 任务(或者一个 Map Reduce Local Work),也可以是一个抽样阶段,或者一个合并阶段,还可以是一个 limit 阶段,以及 Hive 需要的其他某个任务的一个阶段。默认情况下,Hive 会一次只执行一个 stage ,当然如果使用了并行执行,也可以同时执行几个没有依赖关系的 stage 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓之以理的喵~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值