大数据场景下,每天可能都要在离线集群,运行大量的任务来支持产品、运营的分析查询。任务越来越多的时候,就会有越来越多的依赖关系,每一个任务都需要等需要的input表生产出来后,再去生产自己的output表。最开始的时候,依赖关系自然是可以通过管理员来管理,随着任务量的加大,就需要一个分析工具来解析SQL的血缘关系,并且自行依赖上血缘表。
本文就介绍一个使用druid parser,来解析SQL的血缘关系。
一、SQL血缘关系含义
SQL血缘关系的含义是将sql中包含的表全部输出。
例:如下sql,需要解析出该sql包含supindb.student、supindb.college两张表。
String sql = "select * from " +
"(select * from supindb.student d where dt='20190202')a " +
"left join " +
"(select * from supindb.college c where dt='20190202')b " +
" on a.uid=b.uid " +
"where a.uid > 0";
二、SQL血缘关系解析实现
SQL血缘关系解析pom依赖
com.alibaba
druid
1.0.14
SQL血缘关系解析代码
SQL血缘关系解析代码仅解析select、update、insert、delete四种sql,其