元数据平台-数据血缘

首先,我们先了解一下元数据平台架构,主流程是:SQL采集 --》 SQL解析 --》应用层。 1. SQL采集:针对各种SQL查询引擎,编写相应的钩子函数进行SQL收集,收集内容有执行时间、执行耗时、执行用户、执行引擎、jobId和执行SQL等等,最后把SQL信息入Kafka。Hive是实现ExecuteWithHookContext接口,Presto是实现EventListener接口,Spark是实现SparkListner接口。 2. SQL解析:Flink实时消费Kafka数据,进行SQL解析。解析SQL的过程为:定义词法规则和语法规则文件 --》 使用Antlr实现SQL词法和语法解析 --》生成AST语法树 --》遍历AST语法树,考虑到Presto和Spark的SQL语法类似,因此直接参考Hive底层源码实现SQL解析。解析完成后,把血缘信息和元数据信息分别入JanusGraph和ElasticSearch。 3. 应用层:数据录入JanusGraph和ElasticSearch后,就可以进行血缘查询和元数据查询。然后通过graph节点的出度入度进行热点分析。