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名字可能不一样 不过不影响 无妨 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值