最近在对T-1的数据进行测试,所以学会如何看DAG就是非常重要的一个环节了。
1.DAG背景
DAG我们都知道,是一个有向无环图,任务都是有顺序的,存在依赖关系,进行一次跑数据。那为什么要使用这个DAG呢?
DAG中主要存在几层:贴源层、中间层、特征层、数据层。每一层都有着先后关系,我们需要拿到贴源层的数据,这个过程就是通过从各个业务库中去进行抽数。中间层的数据又取决于贴源层的数据,如果贴源层的数据没有抽到,中间层的数据基本就无法进行跑批。
后续的操作基本就无法进行运行和验证了。在对这些内容进行处理的时候,都是通过python语言,所以我们对DAG中的内容就应该特别重视了。DAG中的内容主要大部分都是通过写SQL逻辑去进行操作。
2.DAG是什么
Airflow:可编程、调度和监控的工作流平台,基于有向无环图(DAG),airflow可以定义一组有依赖的任务,按照依赖依次执行。airflow提供了丰富的命令行工具用于系统管控,而其web管理界面同样也可以方便的管控调度任务,并且对任务运行状态进行实时监控,方便了系统的运维和管理。
airflow最简单的理解就是一个高级版的crontab,解决了crontab无法解决的任务依赖问题。
2.1 DAG整体拓扑图
Airflow整体拓扑图:外部系统、MYSQL、airflow master.
- 1.外部系统:直接调用airflow的系统只有BGS、oneservice。
- 2.master节点web ui管理dags、日志等信息,scheduler负责调度以及执行具体dag中的task。
- 3.mysql数据库用来存储dag执行的相关的,记录dag里的task的依赖关系。
2.2 DAG程序目录结构
airflow 程序目录结构一般有dags、shell、etl-shell、confFile、logs、batch、airflow.cfg、airflow-scheduler.err、airflow-scheduler.log、airflow-scheduler.out、airflow-scheduler.pid。
dags:dag任务存放目录。
shell:抽数shell脚本存放目录。
confFile:抽数的配置文件目录。
logs:dag任务执行的日志文件存放目录。
batch:dag生成的数据文件目录(一般要推送到sftp)
airflow.cfg:airflow的配置文件,如连接mysql的连接配置,各个目录的功能定义等。
airflow-scheduler.err:airflow调度器错误日志,每次重启会清空。
airflow-scheduler.log:airflow由初始安装至今的所有运行日志。
airflow-scheduler.out:airflow每次重启后运行日志。
airflow-scheduler.pid:记录pid的文件。
stop_start.sh:airflow的停启脚本(包括scheduler、web)。
3.如何看DAG
Airflow中的DAG有一个规则,起码你可以通过这个结构去明白DAG有哪些固定的模块。固定的模块知道然后记住就可以了,这样至少可以从一眼中找到你所需要的逻辑。学会看DAG也很重要。
DAG初认识,可以参考网址:
我们最重要的时需要了解我们所知道的那一部分内容。也需要技巧,比如搜索FROM或者SELECT关键字,根据这些关键字去找到自己的逻辑部分。我比较喜欢用from关键字去看后面的来源表,这样大致你就可以知道是哪几个表,这几个表之间是如何通过sql语句去进行关联的。
看DAG步骤:
- 1.找到你的DAG
- 2.通过from关键字定位到你的SQL逻辑
- 3.复制select...from...这段语句就知道被插入到特定表的数据来源
- 4.分析select...from...这段语句里面的逻辑是否是你想要的数据