本文只阐述最基本的表级别的血缘关系的实现思路,真实的血缘实现,远比文章中的场景复杂。
source_table_regex = re.compile(r"(?:from|join)\s+(\S*)(?:\s+|;)", re.IGNORECASE)
target_table_regex = re.compile(r"insert\s+(?:into|overwrite)\s+table\s+(\S*)\s+", re.IGNORECASE)
select *
--from tableA
from tableB;
select * from tableA
where description = "from Excel";
Antlr:ANTLR (ANother Tool for Language Recognition ) 是一种语言识别工具,它提供了一个框架,可以通过包含 Java, C++, 或 C# 动作(action)的语法描述来构造语言识别器,编译器和解释器。
Hive根据Antlr定义的词法、语法规则完成词法、语法分析将HQL解析为AST Tree;
遍历AST Tree,抽象出查询的基本组成单元Query Block;
遍历Query Block解析为操作树Operator Tree(即,逻辑执行计划);
逻辑优化器进行操作树变换,合并多余的ReduceSinkOperator,减少shuffle;
遍历Operator Tree,将操作树翻译为对应的MapReduce任务;
物理优化器进行MapReduce任务变换,生成最终的执行计划。
免责申明:
本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!
《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu
《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack