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、完成。

2273

被折叠的 条评论
为什么被折叠?



