Hive的执行过程
Hive执行时,解析器负责把SQL转成抽象语法树(AST)并做语法检查,编译器负责把AST编译成可执行的逻辑计划,两者是“翻译”和“校验”的关键环节。
可以把Hive执行理解成一条流水线:你写的SQL先进解析器,再经过编译器、优化器,最后变成MapReduce/Tez/Spark任务去跑。
🔧 各组件作用
- 解析器(Parser):把SQL字符串拆解成抽象语法树(AST),并做基础校验——比如表是否存在、字段是否存在、SQL语义是否有误。一般用ANTLR这类工具完成。
- 编译器(Compiler):拿到AST后,结合Metastore里的元数据做语义分析(验证字段类型、检查分区等),然后把AST转换成逻辑执行计划(Operator树),描述“要做什么操作”。
- 优化器(Optimizer):对逻辑计划做优化,比如谓词下推、列裁剪、分区裁剪、调整JOIN顺序等,让执行更高效。
- 执行器(Executor):把优化后的计划切成具体的MapReduce/Tez/Spark任务,提交到集群上执行。
🚀 执行流程速览
- 提交SQL:用户通过CLI或JDBC提交HQL。
- 解析:解析器生成AST,并校验语法和基础语义。
- 编译:编译器查Metastore元数据,生成逻辑计划。
- 优化:优化器对逻辑计划做规则优化和成本优化。
- 执行:执行器把计划转成物理任务,提交到Hadoop集群。

浙公网安备 33010602011771号