整个处理流程包括主要包括,语法解析(抽象语法树,AST,采用antlr),语义分析(sematic Analyzer生成查询块),逻辑计划生成(OP tree),逻辑计划优化,物理计划生成(Task tree),以及物理计划执行组成。
下面这张图(不知道是谁画的)简要的说明了整个处理的流程
这里重点说一下物理计划生成,以及执行。
物理计划的生成是根据逻辑操作树(operator)来生成的,物理计划由Task对象执行的,每个task有一个woker对象,work代表物理计划的描述。
主要有FetchWork,MoveWork,MapredWork,CopyWork,DDLWork,FunctionWork,ExplainWork,ConditionalWork
物理计划的执行,是针对每一个物理计划而调用execute方法。
主要有FetchTask,ConditionalTask,CopyTask,DDLTask,ExplainTask,MapRedTask,MoveTask
其中MapRedTask实现的功能是mapreuce的客户端,它根据woker的描述MapredWork,生成一个plan xml文件,作为hadoop jar [params]相关的命令参数,传递给
mapreduce来执行(ExecMapper,ExecReducer)。
下面这张图比较清晰的说明了在mapreduce的过程中数据的处理过程:

本文简析了Hive的处理流程,包括语法解析、语义分析、逻辑和物理计划生成。重点介绍了物理计划生成阶段,Task对象如何执行物理计划,以及MapRedTask在MapReduce中的作用,它生成XML计划文件并由Hadoop MapReduce执行。数据的存储格式FileFormat和SerDe也在文中提及,它们分别负责文件中的数据存储和对象转换。

最低0.47元/天 解锁文章
696

被折叠的 条评论
为什么被折叠?



