在Airflow中,操作符是一些可扩展的Python类,可用于执行不同的操作。这些操作符是可配置的,可以接受运行时参数并使用上下文来处理它们。
上下文变量是在Airflow任务执行期间可以访问的变量。这些变量存储在Airflow的上下文中,并可以通过操作符中的“context”属性访问。
下面是一个使用上下文变量的简单示例,其中操作符将上下文变量打印到Airflow日志中:
from airflow.models import DAG
from airflow.utils.dates import days_ago
from airflow.operators.bash_operator import BashOperator
default_args = {
'start_date': days_ago(1)
}
with DAG('context_example', default_args=default_args) as dag:
task = BashOperator(
task_id='print_context',
bash_command='echo "{{ ds }}"',
dag=dag
)
@task
def print_context(**context):
print(context)
在这个例子中,print_context
被定义为一个Python函数,并使用@task
装饰器来包装。在这种情况下,操作符和任务具有相同的名称“print_context”。
由于print_context
是任务的一部分,它可以访问上下文中提供的参数。在这个例子中,我们将上下文打印到Airflow任务日志中,以便我们可以查看传递给任务的ds
参数的值。
在这个例子中,print_context
将上下文作为关键字参数接受,并使用Python的print
函数将其打印到控制台。
上下文变量在Airflow中非常有用,因为它们可以用于将数据从一个任务传递到另一个任务,或者将动态参数传递给操作符。