需求:外界传入参数,PythonOperator 根据参数查询数据库得出结果, BashOperator 根据pythonOperator查询的结果当作参数去打包下载HDFS 的 文件。
分析:
(1)provide_context=True : 外界传参数,需要使用PythonOperator 的provide_context=True 来获取外界参数。 provide_context 默认为False, 即不会将产生的数据放入上下问中。
(2) 将provide_context 设置为True后, 在自定义方法的参数中注入 **kwargs ,从**kwargs 中获取外界传来的数据;如在传入的json 数据中kwargs['dag_run'].conf['date_end’] ,获取date_end
(3)在getMacLists 方法中,我使用了SQL 底层的查询方法JdbcHook.get_hook, 获取数据库操作链接。以dateEnd、dateStart、getMacLists方法均以return 方式,返回的值会放入 Xcom 中。放入 Xcom 中 值可供其他Operator 的获取。
(4)数据库连接池 可以在UI 界面的Adminitor -》 Connection 中配置
(5)多看源码
#-*- coding: utf-8 -*-
import airflow
from airflow import DAG
from datetime import datetime, timedelta
from airflow.hooks.jdbc_hook import J