airflow不同文件夹之间任务调度

之前搜了好多关于airflow不同文件夹里的任务调度依赖,都没有找到,于是公司同事专门花时间研究了一番,拿出来给大家共享。

 

这里插一句 不知道大家是否在公司做了很多事情然后还觉得什么都不会

或者在公司只做了一块任务 公司的部门区分很清晰 

我最近听说朋友的公司还有专门的定时任务设置部门 就还蛮规范的

 

好啦 言归正传 目的在于:很多任务有依赖

如果不设置依赖,前面的任务虽然时间设置的比较早,但是由于上游数据原因报错,那依赖此任务的下游任务跑的话也会报错

设置依赖的话,前面有表的同步,不同业务方的需求任务,放在一个文件里面太杂,不合适

于是airflow的不同文件依赖就产生啦~~


# -*- coding: UTF-8 -*-
import airflow
from airflow import DAG
from airflow.operators.hive_operator import HiveOperator
from airflow.operators.bash_operator import BashOperator
from airflow.operators.subdag_operator import SubDagOperator
from airflow.models import Variable
import pendulum
from datetime import timedelta, datetime
from airflow.utils import timezone
from airflow.models import Variable
import sys,os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(os.path.split(rootPath)[0])
from subdag_factory import *
from child_dag_name import *
from dw_datasyn_without_depends import *

# 设置本地时区
yesterday = datetime.combine(datetime.now() - timedelta(1),
                             datetime.min.time())

subdag_bi_task_24 = SubDagOperator(
  subdag=subdag_24(PARENT_DAG_NAME, dagName.CHILD_DAG_NAME_24, main_dag.start_date,
                 main_dag.schedule_interval),
  email=[收件人邮箱],
  task_id=dagName.CHILD_DAG_NAME_24,
  dag=main_dag,
)
subdag_bi_task_24.set_upstream([依赖的数据源])
#注意 这里依赖的数据源在此文件夹中的上面的task_id  此任务设置依赖的上游数据源或者任务

#---------->>>>此文件夹设置具体的任务
def subdag_02(parent_dag_name, child_dag_name, start_date, schedule_interval):
  dag = DAG(
    '%s.%s' % (parent_dag_name, child_dag_name),
    schedule_interval=schedule_interval,
    start_date=start_date
  )

  b2 = BashOperator(
      task_id='',
      bash_command="""""",
      dag=dag
  )

return dag

看到这里有chid_dag_name 那么我们再新建一个文件夹 专门用来放置

class dagName():
    CHILD_DAG_NAME_SYN_01 = 'data_syn_01'

这里面父dag及子dag名字和对应起来 我是直接复制过来的 dag名字可能不一样 不过不影响 无妨 

 

Airflow是一个开源的数据管道平台,可以帮助用户创建、调度和监控复杂的数据管道。本教程将介绍如何使用Airflow进行调度。 1. 安装Airflow 首先,需要安装Airflow。可以使用pip安装Airflow: ``` pip install apache-airflow ``` 2. 初始化Airflow数据库 Airflow需要一个数据库来存储任务任务状态。可以使用以下命令初始化Airflow数据库: ``` airflow initdb ``` 3. 创建DAG DAG是Airflow中的一个核心概念,表示一组有向无环图,用于定义任务之间依赖关系。可以在`dags`文件夹中创建一个Python文件来定义DAG。 以下是一个示例DAG: ```python from datetime import datetime, timedelta from airflow import DAG from airflow.operators.bash_operator import BashOperator default_args = { 'owner': 'airflow', 'depends_on_past': False, 'start_date': datetime(2021, 1, 1), 'retries': 1, 'retry_delay': timedelta(minutes=5), } dag = DAG( 'my_dag', default_args=default_args, schedule_interval=timedelta(days=1), ) t1 = BashOperator( task_id='task_1', bash_command='echo "Hello World"', dag=dag, ) t2 = BashOperator( task_id='task_2', bash_command='echo "Goodbye World"', dag=dag, ) t2.set_upstream(t1) ``` 该DAG包含两个任务,`task_1`和`task_2`。`task_2`依赖于`task_1`,因此`set_upstream`方法用于设置任务之间依赖关系。 4. 启动Airflow调度程序 可以使用以下命令启动Airflow调度程序: ``` airflow webserver -p 8080 ``` 这将启动Web服务器,允许用户在浏览器中查看和管理DAG。还需要在另一个终端窗口中启动调度程序: ``` airflow scheduler ``` 5. 运行DAG 可以在Web界面中启动DAG。单击“DAGs”选项卡,然后单击DAG名称。单击“Trigger DAG”按钮以启动DAG。 6. 监控DAG 可以在Airflow Web界面中监控DAG的进度。单击“DAGs”选项卡,然后单击DAG名称。在DAG详情页面上,可以查看任务的状态和日志。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值