大部分写的HiveSQL,最后基本上都可以落到两个角度:1.单表分析:group by+聚合函数,2.多表关联查询,区别只是有的业务逻辑简单一些,有的复杂一些而已:
基础知识
执行计划的生成步骤:
其中Analyzer会和metainfo进行信息交换,去做一些关联查找校验的工作:表存不存在,字段存不存在,字段拼写是否正确等等,最终校验完之后生成query block。
谓词下推和map join都发生在逻辑计划优化处,也就是logical optimizer。
一般执行计划会分成三个部分:
- sql语句的抽象语法树( Abstract Syntax Tree)。
- stage dependencies:各个stage之间的依赖关系展示。
- stage plan:各个stage的执行计划描述。
获得sql语句执行计划的方式:
EXPLAIN [EXTENDED|CBO|AST|DEPENDENCY|AUTHORIZATION|LOCKS|VECTORIZATION|ANALYZE] |