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任务,提交到集群上执行。‌‌

🚀 执行流程速览

  1. ‌提交SQL‌:用户通过CLI或JDBC提交HQL。
  2. ‌解析‌:解析器生成AST,并校验语法和基础语义。
  3. ‌编译‌:编译器查Metastore元数据,生成逻辑计划。
  4. ‌优化‌:优化器对逻辑计划做规则优化和成本优化。
  5. ‌执行‌:执行器把计划转成物理任务,提交到Hadoop集群。‌‌
posted @ 2026-09-23 22:18  hulifang  阅读(3)  评论(0)    收藏  举报