hive SQL语句执行过程

hive SQL语句执行过程

背景了解:
hive数仓数据存储于Hadoop大数据框架的HDFS文件系统中,以文件的方式存储,hive是建立在Hadoop之上的数仓工具,hive将文件数据映射成结构性数据-表。

了解hive SQL语句:
hive SQL语句是在hive上执行的类SQL语句,可以通过hive将hive SQL语句转换成MapReduce程序操作数据,而不必开发专门的应用程序。

示意图:
hive SQL语句执行过程
从示意图可出执行过程基本可分为两部分:hive SQL语句转换成执行计划部分、按执行计划实际操作数据部分。
hive SQL语句转换成执行计划部分:
hive SQL语句执行过程
解析:
1.客户从hive客户端输入一串hive SQL代码。
2.解析器解读hive SQL语句,辨别语法语序,抛出错误,生成语法树。
3.编译器将语法树转换成服务器可以看懂的操作符,生成执行计划。
4.优化器向hive数仓元数据库发出请求获取相对应表的元数据信息,根据元数据信息对执行计划进行优化。

按执行计划实际操作数据部分:
hive SQL语句执行过程
解析:
1.hive SQL代码生成的执行计划由一个个执行步骤按先后执行顺序所组成,执行步骤对应的是mapreduce job。
2.按执行顺序执行Mr job,Mr job又分为map阶段和reduce阶段,map阶段获取文件数据,将文件数据划分到多个map程序做数据统计生成对应键值对(key-value),由文件大小、文件数量、块分割大小决定划分的map数,map阶段完成后会生成文件,将结果数据存储在里面,map数有多少生成的文件就有多少。
3.在进入reduce阶段之前还有个Shuffle阶段,负责将map阶段输出文件内的键值对key值进行排序,将同一个key值放入同一个reduce程序中。
4.reduce阶段是获取map阶段输出的文件,将数据做进一步的合并统计处理,而reduce数由集群设置单个reduce可处理的最大数据来设置的,map端输出的数据量若是大于单个reduce最大数据量,则新增reduce。
5.到此reduce阶段结束会生成数据文件,文件数和reduce数是一样的,接下来就是讲输出文件返回给用户或者作为下一个Mr job执行的输入文件。

该文章是作者对该知识点自己的理解,若理解有误,欢迎指正!