改动报表的调用频度为更小

1、源列表分析
在这里插入图片描述
背景:原来3的调用频度是每天,现在要改为每小时。hourly的运行是每小时10分,daily的运行是1:35分。

思路:

  • 有 被每日调度的表所依赖的表 需要在daily.py设置跨DAG依赖
  • 所有相关源表的bash都要转移到hourly.py去
  • daily.py里的相关依赖关系删除,转移到hourly.py去

2、跨DAG依赖配置,即被频度更小的定时调度依赖的需要配置这个:22、11、12

# 跨DAG依赖:common_hourly(依赖execution_date当天最后一次调度)
def execution_date_hourly(execution_date: datetime) -> datetime:
    return datetime(
        year=execution_date.year,
        month=execution_date.month,
        day=execution_date.day,
        hour=23,
        minute=10,
        second=0,
        tzinfo=execution_date.tzinfo,
    )
22= ExternalTaskSensor(
    task_id='22',
    external_dag_id="hourly",
    external_task_id="22",
    execution_date_fn=execution_date_hourly,
    check_existence=True,
    priority_weight=99999,
    dag=dag
)
# 11的配置
# 12的配置

3、将 11、12、21、22、23、3 配置为每小时调度
hourly.py 文件添加: (daily.py中的bash配置和依赖关系删除掉)
3.1、

bash_11= """
echo '{{ execution_date }}'
echo '{{ execution_date.strftime('%Y-%m-%d %H') }}'
su hadoop -c "sh /home/hadoop/xxx/11.sh '{{ execution_date.strftime('%Y-%m-%d') }}'"
"""
11= BashOperator(
    task_id='11',
    bash_command=bash_11,
    pool='three_pool',
    dag=dag)
# 12、21、22、23、3 的bash配置
21 >> 3
22 >> 3
23 >> 3
11 >> 22
12 >> 22

4、测试
代码修改在测试分支完成的,合并到目标分支(到服务器,git status查看变动和分支;git checkout dev切换到dev分支;git merge test合并test分支;git status可查看到有变动;git push提交变动),最后到服务器运行一个同步所有机器所有项目的脚本,就可以去Airflow进行测试了。
4.1、运行daily中跨DAG依赖的脚本,查看日志,会显示在轮询,等待着昨日23:10的数据。
4.2、运行hourly的脚本,时间选中23:10,运行。
4.3、4.1 还在轮询,直到4.2运行完成,4.1开始运行、完成。说明跨DAG设置功能完成。
4.4、非跨DAG依赖的脚本,按照依赖次序运行即可,不按照次序的话在Airflow页面上就会显示错误了。
4.5、完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值