处理回填和持续运行的不同计划间隔的最佳方法是什么?
对于回填,我想使用每日间隔,但对于持续运行,我想使用每小时间隔。
我可以想到三种方法:
我看到的最简单的方法是在一个 .py 文件中定义两个 DAG。dag_backfill以每天为间隔,过去的开始日期和结束日期为datetime.now(),dag_ongoing每小时间隔和开始日期为datetime.now(),在dag_backfill完成时接管。但是,这里不鼓励在一个文件中使用两个 DAG :
我们确实支持每个 python 文件多个 DAG 定义,但不建议这样做,因为我们希望从故障和部署角度更好地隔离 DAG...
两个 .py 文件导入构成管道的相同 python 函数。我担心在这种方法中保持单独的文件一致。
只有一个每小时间隔的 DAG 检查运行日期是否超过过去 1 天,如果是,则仅在这些日期的午夜运行。我觉得这是不雅的,因为它会模糊回填将运行的时间表,至少从 gui 主页。
这个或已知的最佳实践有共同的模式吗?
小智 0
在您的三个选项中,其中 2 个或 3 个是完全可以接受的。
在我们的 ETL 计划中,我们每天运行增量提取,然后在周末刷新。我们在两个不同的计划中使用两个独立的 DAG。它们调用相同的代码,只是使用不同的参数,因此底层代码始终是一致的。只需确保 DAG 的名称彼此相似,例如dag_import_xyz_hourly和dag_import_xyz_daily。
| 归档时间: |
|
| 查看次数: |
352 次 |
| 最近记录: |