假设我想运行一个相当简单的Airflow ETL DAG:它检查DB2中的最后插入时间,如果有新行,则将其加载到DB1中。
有一些可理解的要求:
有一些可理解的要求:
- 它每小时调度一次,前几次运行时间超过1小时
- 例如,第一次运行应处理一个月的数据,并持续72小时,
- 因此第二次运行应处理过去的72小时,持续7.2小时,
- 第三次处理7.2小时并在一小时内完成,
- 从那时起每小时运行。
- 当DAG正在运行时,请不要启动下一个DAG,而是跳过它。
- 如果时间超过触发事件,并且DAG没有启动,请勿随后启动它。
- 还有其他DAG,这些DAG应独立执行。
depends_on_past
:如果设置为True,则表示任务开始时间必须在先前任务的结束时间之后。默认为False。catchup
:如果设置为True,则表示可以运行过去未执行的任务。默认为True。backfill
:如果设置为True,则表示可以运行过去未执行的任务。默认为False。LatestOnlyOperator
:一个空操作符,只检查最新的任务是否已经完成。如果没有完成,则跳过所有任务。
我应该使用哪个,以及哪个LocalExecutor?
附:已经有一个非常相似的线程,但它并不详尽。