Airflow 是一个用于创建、调度和监控工作流的开源平台。它允许用户以有向无环图(DAG)的形式定义工作流,这些图由任务(Task)和依赖关系组成。
运算符(Operator):Airflow 中的运算符是执行特定任务的代码块。例如,BashOperator
用于执行 Bash 命令,PythonOperator
用于执行 Python 函数。
DAG(Directed Acyclic Graph):DAG 是 Airflow 中的工作流定义,它由任务和任务之间的依赖关系组成。
Airflow 中有多种类型的运算符,包括但不限于:
BashOperator
:执行 Bash 命令。PythonOperator
:执行 Python 函数。SparkSubmitOperator
:提交 Spark 作业。MySQLOperator
:执行 MySQL 查询。Airflow 广泛应用于数据管道、ETL(Extract, Transform, Load)作业、机器学习工作流、批处理任务等场景。
在 Airflow 中,任务可以通过多种方式返回值,并且这些值可以在后续任务中被访问。
返回值:
暴露和访问值:
xcom_push
方法推送数据,通过 xcom_pull
方法拉取数据。xcom_push
方法推送数据,通过 xcom_pull
方法拉取数据。问题:任务返回值为空或无法访问。
原因:
provide_context
:在使用 PythonOperator
时,需要设置 provide_context=True
才能访问 ti
对象。解决方法:
PythonOperator
中设置 provide_context=True
。PythonOperator(
task_id='my_task',
python_callable=my_function,
provide_context=True,
dag=dag,
)
def push_value(**kwargs):
value = "Hello, Airflow!"
kwargs['ti'].xcom_push(key='my_key', value=value)
def pull_value(**kwargs):
value = kwargs['ti'].xcom_pull(task_ids='push_task', key='my_key')
print(value)
通过以上方法,可以确保在 Airflow 中正确返回、暴露和访问任务的值。
领取专属 10元无门槛券
手把手带您无忧上云