Hadoop Hive概念学习系列之HiveQL编译基础(十)

   由客户端提交的HiveQL语句将最终被转换为一个或多个MapReduce任务并提交由Hadoop执行。不包含聚合和链接的简单SELECT语句能够使用一个单独的只包含Map阶段的任务实现。使用GROUP BY子句的聚合能够使用一个独立的MapReduce任务实现。包含大量多表链接的复杂查询须要依靠多个MapReduce任务的顺序执行来实现。oop

    HiveQL编译器的操做分为好几个阶段。优化

    在第一个阶段中,查询语句被解析并转化成抽象的语法树。随后语法树将被传给语义分析器,在这一过程当中,经过使用元数据存储中的信息来判别列名和数据类型。编译器

语义分析器将它们转化并生成一种内部的表达方式,而后传递给逻辑计划生成器,在这里将生成一颗逻辑操做树。在逻辑计划通过数次的传递和优化以后,它将被送往物理计划生成器。通过物理计划生成器和处理以后,将产生一张DAG(有向无环图)用以生成最终的MapReduce任务。编译

相关文章
相关标签/搜索