预备知识
- 表级数据血缘:数据表的派生关系。
- Hql: hive sql
- 通过hive的hql parser在AST(抽象语法树)层级操作
- 如果需要做字段血缘,在AST级别是可以完成的,不过需要熟悉大量的hql语法规则和其在ast中的实际表示。
- 耳闻hive的ast并不好,也许是积重难返吧,新语法规则的引入必然要和旧的规则做妥协。可以换用spark sql的parser或者presto的parser。
参考
数据血缘
- 分析过程:
- 查看hql的官方文档,结合应用实例,分析确定存在血缘关系的hql有2种:
- Create Table As Select (CTAS)
- Inserting data into Hive Tables from queries
- 了解基本的AST结构,分析上边2种hql的AST结构,从中抽取原表和目标表的对应关系。
- 查看hql的官方文档,结合应用实例,分析确定存在血缘关系的hql有2种:
- hql获取:一种方式是通过hive hook的方式从hive server端获取。
- 结论:搞清ast的结构,结果还是很清晰和简