Hive SQl语句的执行

1.  hive语句执行时哪些在map执行,哪些在reduce执行呢

     Map/Reduce是在物理执行计划的地方生成的。

       很简单,ReduceSinkOpertor之前的在Map执行,ReduceSinkOperator之后的在Reduce执行,ReduceSinkOperator的作用是把数据从Map发到Reduce.
  具体点:

     FROM (TableScanOperator),WHERE(FilterOperator),MapJoinOperator,ReduceSinkOperator在Map端执行。
     GROUP BY(GroupByOperator),JOIN(JoinOperator),DistributeBy,Sort By, Distinct,Having(FilterOperator)在Reduce端执行。
     
在Reduce端执行的重要特点就是有分发的key,比如group by key, join ona.key=b.key, count(distinct key), distrbute by key, cluster by key

2.查看语句的执行过程的Hvie SQl语句

    Hive提供EXPLAIN命令,显示查询的执行计划。语法如下:

     EXPLAIN [EXTENDED] query

 考虑下面的EXPLAIN查询:

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是根阶段,Stage-2在Stage-1完成后执行,Stage-0在Stage-2完成后执行。

map/reduce阶段包含2部分:

   map/reduce场景本身包含2个部分:表映射到Map运算符树的别名--这个映射,通知mapper运算符树调用,处理特定表的行或先前的map/reduce阶段的结果。在上面例子的Stage-1,原始表的行,被Reduce输出运算符的运算符树处理。类似,在Stage-2中,Stage-1的结果的行被Reduce输出运算符的其他运算符树处理。每个Reduce输出操作符,根据元数据的标准,把数据分区到reducers。

   Reduce操作符树——这个操作符树处理map/reduce任务的reducer的所有行。在例子的Stage-1,Reducer操作符树开展局部聚合,而Stage-2的reduers操作符树对Stage-1的局部聚合,做最终的聚合的计算。

本部分翻译自 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Explain

3.Hvie SQL语句的执行顺序

from... where.... select...group by... having ... order by...

本文系整理所得。




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值