DataWorks周期调度节点配置生效默认采用T+1模式,即任务发布次日生成的实例为根据新发布的内容生成。如需让新发布或变更的任务在当天生效运行,可使用发布后即时生成模式。
工作原理
在DataWorks中,对节点进行变更并执行提交(发布)操作后,新配置对实例生成的影响方式主要分为以下两种。这两种方式决定了变更是在当天立即生效,还是在下一个调度周期(次日)才生效。
方式A:T+1次日生成 (系统默认)
此方式为系统默认推荐选项,旨在通过将变更与当天的运行实例隔离,最大限度地保障当天生产环境的稳定性。
运行原理:
发布操作在当天(T日)仅作为一次定义变更,不干预当天的实例运行。当天(T日)影响:
行为:仅更新节点的代码与属性定义,不影响当天任何已生成或即将生成的实例。T日的所有实例仍将按照发布前的旧配置运行。
建议:若希望新逻辑在当天对数据生效,建议在发布后手动对T日实例执行“补数据”操作。
次日(T+1)影响:
所有变更将在发布次日(T+1)的第一个周期实例开始,统一按新配置生成和运行。
方式B:发布后及时生成
此方式旨在让节点变更尽快在发布当天生效。其核心逻辑是:系统以“任务发布时间点”为基准,判断发布当天(T日)的周期实例应如何处理。
运行原理:
系统会将T日每个周期实例的定时时间与“发布点 + 10分钟系统缓冲期”进行比较。定时时间 < 当前时间 + 10分钟
现象:新任务-空跑,旧任务-不生成实例
行为:对于从未提交过的新任务,该实例被视为“过期”,会变为空跑状态,不执行其内部的业务逻辑。防止在发布前的旧实例上错误地运行新代码;对于修改后重新提交的旧任务,已过期的实例不会生成。
定时时间 > 发布时间 + 10分钟
现象:正常执行
行为:系统会立即根据新配置生成并执行该实例。
次日(T+1)影响:
发布次日(T+1)的所有周期实例,将全部基于新配置生成。
为确保跨天调度逻辑的确定性,存在一个特殊的“跨天窗口期”(如图中的 23:30 - 24:00)。在此时间窗口内提交的发布,无论选择何种生效方式,其变更都将在 T+2 日 才开始生效。
使用限制
变更生效时间:每日
23:30至24:00为系统批量生成实例的时间。在此期间提交的发布操作,其变更将在T+2生成的周期实例中生效。数据源变更限制:如果仅修改节点关联的数据源,即使选择
发布后即时生成,当天已生成的周期实例也不会更新,仍会使用变更前的数据源执行。如需立即生效,需使用补数据功能。
发布后即时生成场景分析
发布后即时生成风险较高,使用不当可能导致依赖关系错乱、实例被意外删除或替换,影响当天任务的稳定性。
推荐场景
建议仅在以下场景谨慎使用:
新建并需当天运行的节点:新建且无复杂上下游依赖的节点,需在发布后当天运行。
替换已有实例:使用新配置替换当天已生成但尚未运行的周期实例。
高风险场景(不推荐)
不建议在以下场景使用此功能,否则可能导致当天依赖关系复杂化,甚至引发调度异常:
修改已发布任务的调度配置:尤其是有复杂上下游依赖的任务。修改调度周期(如从天调度改为小时调度)并即时发布,可能导致部分旧实例被保留,部分新实例被创建,依赖关系错乱。
上下游实例生成方式不一致:例如,上游节点使用
T+1模式,而下游节点使用发布后即时生成。此操作会导致下游节点当天生成的实例找不到上游依赖,成为孤立节点且无法自动运行。
替代方案
对于修改已发布任务的场景,更安全的操作是:
使用默认的
T+1模式发布任务。发布成功后,对该任务执行补数据操作,手动触发当天需要运行的实例。
发布后即时生成场景实践
场景一:新建节点选择发布后即时生成实例
新节点发布后,其实例执行情况取决于定时时间与发布时间的关系(需考虑10分钟延迟)。
定时时间 | 实例状态与行为 |
晚于(发布时间 + 10分钟) | 系统将生成一个可正常调度的周期实例,并在到达定时时间后执行。 |
早于或等于(发布时间 + 10分钟) | 系统将生成一个实例状态为实时生成的过期实例。该实例为空跑状态,不会实际执行。 若需执行当天数据,可选择进行补数据操作,补业务时间昨天的数据。该操作生成实例时也会存在10分钟的时间差,详情请参见工作原理。 |

示例:假设任务发布至生产环境的时间为12:00,则实时转实例生效时间点为12:10。
若任务的定时时间在
12:10后,则任务将真实调度执行。若任务的定时时间在
12:10前,则任务将空跑,其实例状态为实时生成的过期实例。
场景二:更新已发布任务的调度周期
更新生产任务B的调度时间(即调度频率与定时时间),并将变更操作发布至生产环境,该任务当天周期实例可能会出现变更前与变更后的实例同时存在,因此,会导致任务当天的依赖关系比较复杂。
此场景仅发生在实时转实例任务发布的当天,发布第二天任务会正常根据配置生成周期实例。
具体如下:
任务的定时时间为未来时间
DataWorks将根据最新调度配置替换已生成的未来时间段的实例。
任务的定时时间为过去时间
DataWorks会保留定时时间之前的实例,替换或删除定时时间之后的实例。
场景三:上下游任务实例生成方式不一致
若上下游均为新建节点,并且上下游任务的实例生成方式不一致。例如,上游选择T+1次日生成,下游选择发布后即时生成,则会导致产生场景:节点孤立。孤立节点不会自动调度运行,如果该孤立节点下游依赖较多,会导致下游任务均不能正常调度,对下游业务造成严重影响。
场景四:变更上游任务调度时间,对下游依赖关系的影响
不同周期频率的上下游任务互相依赖的情况下修改调度时间,会按照上游节点最新的调度配置(天、月、小时依赖)来设置下游依赖。
变更调度时间的生产任务,其下游实例会按照最新的调度配置,为新生成的实例和未替换的旧实例挂载依赖,小时、分钟各场景依赖情况,详情请参见必读:复杂依赖场景调度配置原则与示例。待发布的节点版本,其实例生成方式为发布后即时生成,且存在调度时间变更时,才会出现该场景。
示例场景如下:
场景一:上游节点从每6小时调度一次,变更为每8小时调度一次(0:00,08:00,16:00),并且选择即时生成实例。

场景二:上游节点从每6小时调度一次,变更为每日16点调度一次,并且选择即时生成实例。

