PythonOperator、BashOperator以及Xcom使用

本文介绍如何在Airflow中结合PythonOperator和BashOperator处理工作流程。通过设置`provide_context=True`,从外部传递参数,并在PythonOperator中使用JdbcHook查询数据库。查询结果存储在Xcom中,然后由BashOperator读取这些参数来执行HDFS文件的打包下载任务。数据库连接配置在Airflow的Connection管理中,理解源码有助于更好地利用这些Operator。
摘要由CSDN通过智能技术生成

 

需求:外界传入参数,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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野狼e族

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值