Dataphin依赖周期和依赖策略详解

本文涉及的产品
智能数据建设与治理Dataphin,200数据处理单元
简介: Dataphin依赖周期和依赖策略详解

Dataphin v3.12 版本对任务节点的上游依赖做了升级改造,v3.11 及之前版本的上游依赖逻辑参见 Dataphin小时调度依赖关系及运行说明。本文将详细说明 v3.12 版本的上游依赖规则。

Dataphin 调度系统基础知识

在进入具体的依赖规则说明之前,需要先解释说明一下 Dataphin 调度系统的一些基础背景知识。

任务与实例

在 Dataphin 的使用过程中,经常会遇到“任务”或“实例”等概念,比如在“运维”界面,可以看到“任务运维”和“实例运维”。部分用户可能已经明白这两者的含义,这里还是再说明下。

  1. 任务与具体的运行日期时间无关,是一个“定义”,定义运行的具体逻辑与步骤,类似于面向对象编程(OOP)里面的“对象”(object)。提交发布一个集成/计算任务或逻辑表,即创建了一个“任务”。
  2. 而实例则与运行日期时间有关,任务的某一次运行被称为这个任务的一个“实例”,类似于面向对象编程(OOP)里面的“实例”(instance)。

实例生成周期与任务运行周期

  1. 周期实例的生成频次为每天一次,系统在每天的 23:00 基于此时的周期任务自动生成第二天的周期实例。同一天内生成的周期实例,就称之为“同周期”的周期实例,这里的“同周期”是指的同“实例生成周期”。“同周期”有时候也叫做“本周期”。
  2. 任务的“调度属性”中,有一个配置项为“调度周期”,这里的“周期”是指的任务(实例)的“运行周期”,与上面的实例生成周期是完全两个不同的周期。“调度周期”提供了“月/周/日/小时/分钟”五个选项,但在具体实现上都是“天”。
  1. “日” 任务每天都会生成一个实例
  2. “月/周” 任务每天也会生成一个实例,但只有指定日期的实例是“正常调度”,其他日期为“空跑调度”。比如: 某个任务调度周期设置为每月 1 日,实际上是每月 1 日的实例正常调度运行,1 日之外的日期全部空跑运行。月/周 任务的实现形式等同于开启了条件调度的日任务(条件为某些日期正常运行,其他日期空跑运行)
  3. “小时/分钟” 任务每天都会生成多个实例
  4. 由以上可以得出: 每一个周期任务,无论“调度周期”如何设置,在每一天至少有一个周期实例
  5. 调度周期也有“同周期”的概念
  1. 月 调度任务,如果两个月调度任务所制定的正常调度的日期相同(无论起调时间是否相同),则这两个任务视作同运行周期
  2. 周 调度任务,如果两个周调度任务所制定的正常调度的日期相同(无论起调时间是否相同),则这两个任务视作同运行周期
  3. 日 调度任务,无论起调时间是否相同,所有日调度任务都视作同运行周期
  4. 小时/分钟 任务,如果两个任务在一个实例生成周期内的实例个数以及实例起调时间完全一致(调度 cron 表达式一样),则这两个任务视作同运行周期。
  5. 不同调度周期的任务是不同运行周期,如 周与日是不同运行周期

跨周期依赖

Dataphin 存在两种跨周期依赖,这两个周期在本质上都在同一个时间维度。

  1. 跨 实例生成周期 依赖。月/周/日任务的自依赖都是跨实例生成周期的依赖,一般为依赖上一个实例生成周期(T-1),也存在跨周期依赖其他任务的情况。除任务自依赖外,两个任务之间的默认依赖规则是同实例生成周期内的依赖。
  2. 跨 任务运行周期 依赖。如 日调度任务依赖月调度任务,日调度任务依赖小时调度任务,小时任务依赖 cron 表达式不同的其他小时任务


依赖关系

周期任务 A 依赖周期任务 B,最终需要转换为周期实例中的任务 A 的实例依赖任务 B 的实例。周期任务没有时间维度,而周期实例则存在“实例生成周期”和“运行周期”两个时间维度,周期实例基于周期任务来生成,因此需要在任务 A 中需要定义 A 的实例与任务 B 的实例间的依赖关系:

  1. A 的实例依赖 B 的实例的哪个实例生成周期。
  1. 例:  A ,B 各自对应一张按日分区(分区字段为 ds)且按日更新的表,A 与 B 均是日调度任务,产出 A (ds=20230830) 需要读取 B(ds=20230828),则表示 A 的实例需要依赖前 2 日的 B 的实例
  1. A 的实例依赖 B 的实例的哪个运行周期。
  1. 例: A 为日调度任务,B 为小时调度(每个整点运行)。需要指定 A 依赖 B 的具体哪个实例。

Dataphin v3.12 之前的版本,用户只能指定依赖关系里的实例生成周期,运行周期系统有一套内置的规则,用户不可干预修改,v3.12 后对此进行了改进。具体的差异见下表:

v3.9 及之前版本

v3.10, v3.11

v3.12

在 A 中指定 B 的实例生成周期

支持

仅支持指定 本周期 或 上周期(T-1),本周期与上周期为两个独立的依赖列表

支持

仅支持指定 本周期 或 上周期(T-1),本周期与上周期在同一个依赖列表

支持

支持指定 本周期 或 上周期(T-1),前 N 天(N<=15),最近 24 小时(特殊周期,见下文说明),所有周期在同一个依赖列表

在 A 中指定 B 的运行周期

不支持,由系统默认设置

不支持,由系统默认设置

支持,系统有默认规则,用户可自定义


依赖周期和依赖策略

v3.12 将依赖关系中与“周期”相关的部分拆分为了两个部分:

  1. 依赖周期,用于选择所依赖上游任务的“实例生成周期”。提供四个选项:
  1. 本周期(当日),即当前任务的实例与上游任务的实例在同一个实例生成周期内。
  2. 上周期(前 1 日)
  3. 前 N 日,N 可配置,1 <= N <= 15
  4. 最近 24 小时,这个选项并不对应实例生成周期,而是基于当前任务起调时间的一个时间区间。要实现小时/分钟任务的跨实例生成周期自依赖,需要引入这个特殊的依赖周期。
  1. 依赖策略,用于选择所依赖上游任务的具体实例(“运行周期”不同,生成的实例个数不同)。小时任务 A 的运行周期为每小时运行一次,那么在每一个依赖周期(实例生成周期)内,都有 24 个实例。如果将 A 由每小时运行一次修改为每两小时运行一次,一天内的实例个数就会从 24 个减少到 12 个。为了兼容上游任务随时可能的变更,依赖策略提供四个相对化的选项:
  1. 第一个实例,所选依赖周期内的第一个实例。
  2. 最后一个实例
  3. 全部实例
  4. 最近一个实例,起调时间离当前任务(实例)起调时间最近的实例,优先往后找(悲观策略)

添加新的上游依赖任务时,系统会根据当前任务和上游任务的“调度周期”提供默认的“依赖周期”和“依赖策略”,与 v3.11 的系统内置规则完全兼容,可以参见Dataphin小时调度依赖关系及运行说明 或下表:

本节点调度周期

上游节点

上游节点调度周期

上游节点是否自依赖

默认依赖周期

默认依赖策略

本节点(自依赖)

-

上周期(前 1 日)

最后一个实例

本节点(自依赖)

-

上周期(前 1 日)

最后一个实例

本节点(自依赖)

-

上周期(前 1 日)

最后一个实例

小时

本节点(自依赖)

-

最近 24 小时

最后一个实例

分钟

本节点(自依赖)

-

最近 24 小时

最后一个实例

日/周/月

非本节点

本周期(当日)

最后一个实例

日/周/月

非本节点

小时/分钟

本周期(当日)

全部实例

日/周/月

非本节点

小时/分钟

本周期(当日)

最近一个实例

月/周/日/小时/分钟

非本节点

月/周

本周期(当日)

最后一个实例

月/周/日/小时/分钟

非本节点

本周期(当日)

最后一个实例

月/周/日/小时/分钟

非本节点

本周期(当日)

最后一个实例

小时/分钟

非本节点

本周期(当日)

最后一个实例

小时/分钟

非本节点

小时/分钟

本周期(当日)

最近一个实例

以上就是 v3.12 版本调度配置的主要升级点。

相关文章
|
6天前
Dataphin功能Tips系列(7)-维表版本策略
在创建普通维度逻辑表和事实逻辑表关联维度时,如何配置维表版本策略?
103 2
|
6天前
|
调度
Dataphin功能Tips系列(6)-月调度周期任务补数据的业务日期选择
一个销售额结算的周期任务的调度周期是月调度---每月1号进行调度,但是有一天调整了计算口径后希望重新计算过去几个月的销售额,此时补数据任务的业务日期应该如何选择?
|
6天前
|
数据采集 运维 Java
有了 Dataphin v4.0,跨系统调度依赖再也不是难题
Dataphin v4.0引入了新的触发式节点,用于解决多数据平台间的调度问题。当上游系统(如Unix的crontab)完成数据采集后,可通过触发式节点通知Dataphin开始拉取数据,避免传统轮询方式的效率低和资源占用。触发式节点需满足Dataphin OpenAPI开通和网络连通条件,并通过SDK进行外部触发。示例展示了如何创建和使用触发式节点,以及使用Java SDK模拟触发请求。
|
前端开发 调度
Dataphin调度周期说明
介绍Dataphin不同类型任务当前支持的调度周期及配置说明
|
6天前
|
SQL 分布式计算 DataWorks
Dataphin常见问题之补数据任务卡着不动如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
6天前
|
Java 数据处理 调度
Dataphin常见问题之离线管道同步数据datax就报连接超时如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
6天前
|
SQL DataWorks 监控
Dataphin常见问题之数据怎么都补不过去如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
6天前
|
存储 Oracle 关系型数据库
Dataphin常见问题之想要周期执行任务如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
6天前
|
SQL 分布式计算 数据可视化
Dataphin常见问题之看不到上个版本的血缘如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
6天前
|
SQL 分布式计算 关系型数据库
Dataphin实现MaxCompute外表数据快速批量同步至ADB MySQL
当前大数据时代背景下,企业对数据的处理、分析和实时应用的需求日益增强。阿里云MaxCompute广泛应用于海量数据的ETL、数据分析等场景,但在将处理后的数据进一步同步至在线数据库系统,如ADB MySQL 3.0(阿里云自研的新一代云原生关系型数据库MySQL版)以支持实时查询、业务决策等需求时,可能会遇到数据迁移速度缓慢的问题。 DataphinV3.14版本支持外表导入SQL的带参调度,实现通过MaxCompute外表的方式将数据批量同步至ADB MySQL 3.0中,显著提升数据迁移的速度和效率。
301 1

热门文章

最新文章