airflow DAG配置文件

更多airflow資料,可查看:airflow從入門到精通學習筆記系列

DAG概念

DAG(有向無環圖),在airflow中定義一個有依賴的作業執行集合,包含有一組特定的作業任務,每個任務都是一系列具體的操作命令。

  • Task為DAG中具體的作業任務,任務一般是一個具體的操作,如執行某條shell命令、執行某個python腳本等;
  • DAG中包含有多個任務Task及Task之間的執行依賴關系、調度時間;

官方樣例

"""
Code that goes along with the Airflow tutorial located at:
https://github.com/apache/airflow/blob/master/airflow/example_dags/tutorial.py
"""
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta


default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2015, 6, 1),
    'email': ['airflow@example.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
    # 'queue': 'bash_queue',
    # 'pool': 'backfill',
    # 'priority_weight': 10,
    # 'end_date': datetime(2016, 1, 1),
}

dag = DAG(
    'tutorial', default_args=default_args, schedule_interval=timedelta(days=1))

# t1, t2 and t3 are examples of tasks created by instantiating operators
t1 = BashOperator(
    task_id='print_date',
    bash_command='date',
    dag=dag)

t2 = BashOperator(
    task_id='sleep',
    bash_command='sleep 5',
    retries=3,
    dag=dag)

templated_command = """
    {% for i in range(5) %}
        echo "{{ ds }}"
        echo "{{ macros.ds_add(ds, 7)}}"
        echo "{{ params.my_param }}"
    {% endfor %}
"""

t3 = BashOperator(
    task_id='templated',
    bash_command=templated_command,
    params={'my_param': 'Parameter I passed in'},
    dag=dag)

t2.set_upstream(t1)
t3.set_upstream(t1)

配置說明

  • DAG類定義了一個tutorial名稱的DAG;
  • DAG類的schedule_interval參數定義了調度策略為每天執行一次;
  • t1、t2、t3定義了三個Bash執行器的Task;
  • t1的bash_command參數指定這個任務的具體操作,即執行date命令;
  • t3任務的使用了jinja傳入參數;
  • set_upstream定義了依賴關系,即t2、t3依賴于t1,需等待t1執行完發觸發執行;

常用的配置文件管理命令

  • 配置文件的存放路徑:$AIRFLOW_HOME/dags
[root@node0 data]# ls $AIRFLOW_HOME/dags
__pycache__  tutorial.py
  • 查看已存在的FDAG配置
[root@node0 data]# airflow list_dags
-------------------------------------------------------------------
DAGS
-------------------------------------------------------------------
tutorial
  • 查看指定DAG配置中的子任務Task
[root@node0 data]# airflow list_tasks tutorial
print_date
sleep
templated

更多airflow資料,可查看:airflow從入門到精通學習筆記系列

如發現文中有錯誤,望留言指明,萬分感激;
如對此文章內容感興趣,想進一步探討,可以留言交流;
如想轉發此文章,請留言協商一下,切勿不指明出處的轉發,尊重原創;
如閱讀過程中有收獲,并想感謝一下,歡迎打賞;
----小林幫

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 本文將介紹 Airflow 這一款優秀的調度工具。主要包括 Airflow 的服務構成、Airflow 的 Web...
    a7f00a9019ae閱讀 62,887評論 6 42
  • 在快速啟動部分中設置很簡單,構建生產級環境需要更多的工作,下面來了解一下。 1. 設置配置選項 第一次運行Airf...
    路小漫閱讀 9,640評論 0 3
  • 我們使用 Airflow 作為任務調度引擎, 那么就需要有一個 DAG 的定義文件, 每次修改 DAG 定義, 提...
    haitaoyao閱讀 4,018評論 0 7
  • 簡介 airflow是airbnb家的基于DAG(有向無環圖)的任務管理系統, 最簡單的理解就是一個高級版的cro...
    lao男孩閱讀 49,378評論 1 21
  • 本月主題公路小說,給我找個恰當的理由出行,體驗在路途上,帶上《格列佛游記》。 《格列佛游記》可以說是一部政治寓言小...
    山果花開閱讀 351評論 2 5