HiveSQL 中group by 、join转MapReduce作业 过程详解

6 篇文章 0 订阅

Join

SELECT e.empno,e.ename,e.deptno,d.dname FROM emp e join dept d WHERE e.deptno = d.deptno

  1. 先对数据进行切分(数据量大)
  2. 然后执行map操作,map输出<k,v>;k为join条件,v为不同来源的数打上标签,如:emp标签为a,dept标签为b.
  3. 执行shuffle ,把key相同的拉到一个task里
  4. reduce计算最终结果输出
    在这里插入图片描述
    Group by

SELECT count(1) FROM emp group by deptno

  1. 先对数据进行切分(数据量大)
  2. 执行map操作,转换成<key,value>并打上标签
  3. 执行shuffle,key相同的数据拉到一个task
  4. reduce计算输出结果
    在这里插入图片描述SQL执行流程
    在这里插入图片描述
  • 根据SQL的语法规则,完成SQL词法,语法解析,将SQL转化为抽象语法树AST Tree
  • 遍历AST Tree,抽象出查询的基本组成单元QueryBlock(QB)
  • 遍历QueryBlock,翻译为执行操作树OperatorTree
  • 逻辑层优化器进行OperatorTree变换,合并不必要的ReduceSinkOperator,减少shuffle数据量
  • 遍历OperatorTree,翻译为MapReduce任务
  • 物理层优化器进行MapReduce任务的变换,生成最终的执行计划

SQL语句执行顺序

  • map
    from–>where(filter)–>select–>group by
  • reduce
    group by -->select

参考:
https://blog.csdn.net/youzhouliu/article/details/70807993#commentBox
https://blog.csdn.net/peixinye/article/details/79587164
https://blog.csdn.net/xyilu/article/details/8996204

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值