模板概述
基于 Antlr4 编译 hive 相关 xxx.g 文件生成对应的模板,如 hive 源码中:
image.png
编译完成生成对应 *.java 文件,Antlr4 详见:Antlr4
解析流程
Parser
image.png
重点:获取SELECT操作中的表和列的相关操作。其他操作这判断到字段级别。
实现思路:对AST深度优先遍历,遇到操作的token则判断当前的操作,遇到子句则压栈当前处理,处理子句。子句处理完,栈弹出。
处理字句的过程中,遇到子查询就保存当前子查询的信息,判断与其父查询的关系,最终形成树形结构;
遇到字段或者条件处理则记录当前的字段和条件信息、组成Block,嵌套调用。
TableBlood
重点:TableBlood 主要包含 HiveTableNode 与 HiveTableEdge
获取节点信息:
Node
获取边缘信息: