hive执行计划解析

1.hive执行流程的重要性

1)当sql任务非常慢时,就需要分析它的执行流程
2)常见的面试中,问对hive的理解?回答只是写sql,这个是很片面的。要从表面的sql,在脑海中映射出MR流程,在哪儿进行map,combiner,shuffle,reduce

2.解析sql执行计划流程

2.1 大数据两类sql框架
单表分析:select a,聚合函数 from XXX group by b
多表join分析:select a.,b. from a join b on a.id=b.id
这两种sql框架,概括了所有的大数据sql,几乎不可能有第三种写法,区别可能是业务复杂,写的复杂点儿而已。
2.2 解析sql执行计划流程详解
在这里插入图片描述
1)parser:将sql解析为AST(抽象语法树),会进行语法校验,AST本质* * 还是字符串
2)Analyzer:语法分析,生成QB(query block)
3)Logicl Plan:逻辑执行计划解析,生成一堆Opertator Tree
4)Logicl Optimizer:进行逻辑执行计划优化,生成一堆Opertator Tree
5)Phsical plan:物理执行计划解析,生成 tasktree
6)Phsical Optimizer:进行物理执行计划优化,生成 t优化后tasktree,该任务即是在集群上执行的作业 任务

六步将普通的sql映射成了作业任务。重点是 逻辑执行计划优化和物理执行计划优化

3.sql执行计划映射MR流程

3.1过滤类查询sql
select a.id,a,city, a.cate form access a where a.day=’20190414’ and a.cate= ‘奔驰’
在这里插入图片描述
整个job是没有reduce的,类似etl作业。其中map数是由文件分片数决定。分区条件直接在数据读取时过滤

3.2分组聚合类查询sql
select city, count(1) form access a where a.day=’20190414’ and a.cate= ‘奔驰’ group by city
在这里插入图片描述
和WC的流程没有本质区别,如上图combiner是本地局部的redece,好处是减少shuffle的数据量,但不是任何场景都会发生combiner,如求平均数。
3.3join类查询sql
待补充

4. 执行计划优化

待补充

扩展1: reducebykey和groupbykey的区别,前者会发生combiner 局部聚合,而后者不会,前者获得的是相同key对应的一个元素,后者是获取元素集合。reducebykey更加适合大数据,少用groupbykey(全数据shuffle)
扩展2: map task数是由数据文件分片数决定的分片数即是map任务数,程序员只能给个期望值
扩展3: reduce task数是由输入reduce的数据的分区(partitions)数决定的即分区数为map任务数,默认是1,程序员可直接设置reduce个数来改变reduce task数,reduce task数决定来 生成的文件数。
扩展4: MR数据shuffle确定数据发往哪一个reduce分区的规则是:取key的hashcode值对分区数模。
扩展5: explain sql ;查看某sql语句的执行计划

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值