精通Airflow任务: Sensors, Operators & Hooks !

欢迎回来!在我们之前的博客中,我们深入研究了Airflow的基本原理,探索了它的目的、功能和机制。现在,让我们进一步了解Airflow的任务,并掌握如何在数据到达服务器时自动触发DAG。

尽管DAG用于构造作业并定义作业将在其中执行的上下文,但DAG实际上并不执行计算。另一方面,Airflow任务是“完成需要的工作”。任务有两种:Sensors和Operators 。Operators 任务执行一些显式操作,Sensors暂停相关任务的执行,直到满足某个条件。理论上,Operators 能够执行任何Python函数。任何过程或数据结构的状态也可以使用Sensors来确定。

Airflow Operators

执行引擎通常扮演操作员的角色。根据Operators 类型,任务由Operators创建,执行特定任务。例如,创建PythonOperator可以执行某个Python方法。常用Operators类别有:

DummyOperator

这是什么都不做的Operators,主要用于在 DAG(有向无环图)中占位,构建任务流程的结构和依赖关系。

from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from datetime import datetime

default_args = {
   
    'owner': 'airflow',
    'start_date': datetime(2024, 12, 4)
}

with DAG('dummy_operator_dag', default_args=default_args, schedule_interval='@once') as dag:
    start_task = DummyOperator(task_id='start_task')
    end_task = DummyOperator(task_id='end_task')
    start_task >> end_task

在这个 DAG 中,start_taskend_task只是作为占位符来展示任务的开始和结束,中间没有实际的操作内容。

PythonOperator

作用:用于执行自定义的 Python 函数。可以将任意 Python 函数封装成一个 Airflow 任务,方便在 DAG 中进行调度。

from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime

def print_hello():
    print("Hello, Airflow!")

default_args = {
   
    'owner': 'airflow',
    'start_date': datetime(2024, 12, 4)
}

with DAG('python_operator_dag', default_args=default_args, schedule_interval='@once') as dag:
    python_task = PythonOperator(
        task_id='python_task',
        python_callable=print_hello
    )

在这个示例中,python_task会在执行时调用print_hello函数,从而在日志中打印出Hello, Airflow!

BashOperator

作用:用于执行 Bash 命令。如果你的任务涉及到在命令行中运行 Bash 脚本或者命令,就可以使用这个操作符。

from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime

default_args = {
   
    'owner': 'airflow',
    'start_date': datetime(2024, 12, 4)
}

with DAG('bash_operator_dag', default_args=default_args, schedule_interval='@once') as dag:
    bash_task = BashOperator(
        task_id='bash_task',
        bash_command='echo "Running a Bash command in Airflow"'
    )

这里的bash_task会在执行时运行指定的 Bash 命令echo "Running a Bash command in Airflow",将相应的字符串输出到日志或者终端。

MySqlOperator(以 MySQL 为例)

作用:用于在 MySQL 数据库中执行 SQL 语句,比如创建表、插入数据、查询数据等操作。

from airflow import DAG
from airflow.providers.mysql.operators.mysql import MySqlOperator
from datetime import datetime

default_args = {
   
    'owner': 'airflow',
    'start_date': datetime(2024, 12, 4)
}

with DAG('mysql_operator_dag', default_args=default_args, schedule_interval='@once') as dag:
    mysql_task = MySqlOperator(
        task_id='mysql_task',
        mysql_conn_id='your_mysql_conn_id',  # 你的MySQL连接ID
        sql="CREATE TABLE IF NOT EXISTS test_table (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255))"
    )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值