Hive--执行计划、数据倾斜解决方案

1 Hive–执行计划

Hive–explain查询执行计划

1.1 执行计划介绍

Hive 执行计划

  • 执行计划解析
    • 对于SQL解析器来说,我们编写的SQL就是一个String,通过HSQL 解析器解析成抽象语法树
    • Semantic Analyzer把抽象语法树转换成了查询块:QueryBlock(QB)
    • Logic Plan Generator 把查询款转换成了逻辑查询计划
    • LogicalOptimizer 重写了逻辑执行计划
    • Physical Plan Generator 把逻辑执行计划转换成了物理执行计划
    • PhysicalOptimizer 优化物理执行计划,选择一个最优的方案执行
  • 对于操作符的优化来说,每个操作符都会有一个对应Operator的实现类,Operator是操作的基类
org.apache.hadoop.hive.ql.exec.Operator
  • 常用的Operator有如下几类
  • TableScanOperator:表扫描的操作符
Table Scan Operator If the data is coming from the map-reduce framework, just
forward it. This will be needed as part of local work when data is not being
read as part of map-reduce framework
  • ReduceSinkOperator: Reduce输出的操作符
  • JoinOperator:Join操作符
  • MapJoinOperator:MapJoin操作符
  • SelectOperator:查询操作符
  • FilterOperator:过滤操作符
  • GroupByOperator:group by 操作符
  • LimitOperator:Limit操作符
1.2 使用执行计划查询一个SQL
  • 查看两个表Join的执行计划
hive> set hive.auto.convert.join;
hive.auto.convert.join=true

explain select * from emp e join dept d on d.deptno = e.dept_no;
  • hive.auto.convert.join参数是开启MapJoin的开关,默认是开启
  • Map Join 小表的最大的数据大小通过hive.mapjoin.smalltable.filesize这个参数来控制,默认是25000000,单位是字节
  • MapJoin执行计划如下
STAGE DEPENDENCIES:
  Stage-4 is a root stage
  Stage-3 depends on stages: Stage-4
  Stage-0 depends on stages: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值