全部產品
Search
文件中心

DataWorks:必讀:複雜依賴情境調度配置原則與樣本

更新時間:Jun 19, 2024

DataWorks支援分鐘小時等類型的調度任務互相依賴,調度類型不同,任務執行的周期數不同。任務各周期是通過執行個體的方式執行,當上下遊調度依賴的類型不同時,您可通過該文檔瞭解上下遊各周期執行個體如何掛載依賴,即上下遊任務不同周期執行個體的依賴情況。

背景資訊

  • DataWorks中,調度任務會根據調度類型及周期數產生相應的周期執行個體(例如,小時調度任務每天會根據周期數產生相應數量的小時執行個體),通過執行個體的方式運行任務。周期任務設定的依賴關係,其本質是任務間所產生執行個體的依賴。上下遊任務的調度類型不同,其產生的周期執行個體數及執行個體的依賴情況不同。

  • DataWorks支援多種調度依賴情境,不同情境的調度任務,可選擇同周期依賴或依賴上一周期。同周期依賴及依賴上一周期,詳情請參見配置同周期調度依賴配置依賴上一周期(跨周期依賴)

配置調度依賴前,您需先瞭解以下內容。

序號

描述

相關文檔

1

DataWorks支援多種調度類型(即分鐘、小時、天、周、月、年),當上下遊調度類型不一致時,DataWorks根據任務定時已耗用時間的就近原則設定調度依賴。

說明
  • 小時任務依賴小時任務,當天的周期數一致時,不符合該原則,即設定的調度依賴與任務的定時已耗用時間無關。

  • 天任務預設依賴小時、分鐘任務當天所有周期執行個體,即待小時、分鐘任務當天所有周期資料加工完成後,天任務才會對小時、分鐘任務當天所有資料進行加工清洗。

掛載依賴:就近原則

2

DataWorks上任務一旦設定依賴,即表示上下遊任務間存在資料依賴。無論下遊任務定時已耗用時間為幾點,均需等上遊任務執行完成後,下遊才滿足可執行條件。

依賴關係對任務執行的影響

3

您可通過具體情境樣本,進一步理解設定依賴的就近原則。

複雜依賴情境匯總

情境包括:

  • 天任務依賴情境

  • 小時任務依賴情境

  • 分鐘任務依賴情境

  • 依賴周月年任務情境

掛載依賴:就近原則

DataWorks的周期任務運行時會產生多個周期執行個體,下遊周期執行個體會依賴上遊周期執行個體(該上遊執行個體需在當前下遊執行個體的定時已耗用時間之前產生)。

通常,若不指定需掛載至某個周期執行個體,下遊周期執行個體掛載依賴時會遵循就近原則,即依賴距離其定時已耗用時間最近(在當前執行個體的定時時間之前,或與當前執行個體的定時時間一致),且未被其他周期執行個體依賴的上遊周期執行個體。不同情境的依賴原則具體如下。

說明
  • 下遊任務的定時已耗用時間若早於上遊任務,即便到達下遊任務的定時時間,該任務也不會被調度,需等待上遊任務運行完成後才會調度運行。

  • 根據就近原則掛載依賴時,對於下遊任務當天的第一個執行個體,如果上遊沒有比它更早的執行個體,則下遊預設依賴上遊當天的第一個執行個體。

情境

說明

示意圖

小時、分鐘任務互相依賴情境

任務依賴與周期執行個體的定時時間有關

  • 預設情況:下遊周期執行個體按照就近原則掛載依賴,即DataWorks會為下遊周期執行個體掛載其定時已耗用時間之前與定時時間一致,且未被其他周期執行個體依賴的上遊周期執行個體。

    說明

    當上遊節點產生的周期執行個體數大於下遊節點,下遊周期執行個體可能依賴多個上遊周期執行個體。

    您可參考細分情境圖示中,小時任務與分鐘任務未設定自依賴的情境進行理解。

  • 特殊情況:若上下遊節點均設定了自依賴(即依賴上一周期:本節點(自依賴),則下遊當前周期執行個體,依賴其定時已耗用時間之前與其定時時間一致的一個上遊周期執行個體。

    說明

    您可參考細分情境圖示中,小時任務與分鐘任務設定自依賴的情境進行理解。

小時、分鐘任務互相依賴的細分情境概覽如下圖。小時、分鐘任務互相依賴

小時任務依賴小時任務樣本如下圖。小時任務依賴小時任務

任務依賴與周期執行個體的定時時間無關

小時任務依賴小時任務,或分鐘任務依賴分鐘任務,並且上下遊節點的周期數(即當天產生的執行個體個數)一致,將按照周期數一一對應,設定依賴關係。

天任務依賴小時或分鐘任務

  • 預設情況:天任務預設依賴小時、分鐘任務當天所有周期執行個體,即待小時、分鐘任務當天所有周期執行個體的資料加工完成後,天任務才會對其當天所有資料進行加工清洗。

  • 其他情況:若天任務只需依賴距離自己已耗用時間最近的小時、分鐘周期執行個體,您可為小時、分鐘任務設定自依賴(即依賴上一周期:本節點(自依賴),設定後,該小時、分鐘周期執行個體運行完成後,天任務便會啟動執行。

天任務依賴當天小時任務

各細分調度情境的依賴及運行情況詳情介紹,請參見附錄:複雜依賴情境匯總

依賴關係對任務執行的影響

下遊任務一旦掛載依賴,若上遊任務非運行成功狀態,即使到達下遊任務的定時已耗用時間,該任務也不會執行。

例如,下遊小時任務B依賴上遊天任務A。

  • 天任務A:定時已耗用時間設定為07:00

  • 小時任務B:定時已耗用時間設定為00:0008:0016:00

若天任務A未運行完成,即便到了下遊小時任務B的定時已耗用時間00:00,該任務也不會運行。下遊任務B的最早實際已耗用時間為07:00依賴關係對任務執行的影響

附錄:複雜依賴情境匯總

不同周期任務的細分依賴情境及其運行情況如下。

說明
  • 下遊任務的定時已耗用時間若早於上遊任務,即便到達下遊任務的定時時間,該任務也不會被調度,需等待上遊任務運行完成後才會調度運行。

  • 根據就近原則掛載依賴時,對於下遊任務當天的第一個執行個體,如果上遊沒有比它更早的執行個體,則下遊預設依賴上遊當天的第一個執行個體。

小時任務依賴其他任務

細分情境

依賴及運行說明

示意圖

小時任務依賴小時任務

  • 上下遊周期數(即產生的執行個體數)一致

    上下遊任務運行當天產生的周期執行個體,將一一對應掛載依賴。即下遊首個執行個體依賴上遊首個執行個體,下遊第二個執行個體依賴上遊第二個執行個體,以此類推。

  • 上下遊周期數(即產生的執行個體數)不一致

    上下遊任務運行當天產生的周期執行個體,將根據就近原則掛載依賴,依賴距離自己定時已耗用時間最近(在當前執行個體定時時間之前,或與當前執行個體定時時間一致)的上遊執行個體。

    說明

    當上遊周期數小於下遊周期數時,下遊多個周期執行個體可能會依賴同一個上遊周期執行個體。

小時任務依賴小時任務

小時任務依賴天任務

  • 小時任務未設定自依賴

    下遊小時任務當天產生的所有周期執行個體依賴上遊天任務。待天任務執行完成後,下遊所有小時周期執行個體才啟動執行。此時,到達定時已耗用時間的小時周期執行個體會並發執行。

    說明
  • 小時任務設定自依賴

    • 僅首個產生的小時周期執行個體依賴上遊天任務,其餘小時周期執行個體,依賴自己上一個周期的小時執行個體。

    • 天任務及上一周期的小時執行個體執行完成後,當前周期的小時執行個體才啟動調度。此時,即使定時已耗用時間已到,小時周期執行個體也不會並發執行。

    說明

    自依賴(即依賴上一周期:本節點(自依賴)會跨天依賴,當昨天最後一個周期執行個體未運行完成,會導致今天的任務無法調度。

小時任務依賴天任務

小時任務依賴分鐘任務

  • 分鐘任務不設定自依賴

    下遊小時任務依賴該小時內上遊分鐘任務產生的所有分鐘周期執行個體。

  • 分鐘任務與小時任務均設自依賴

    下遊小時任務依賴該小時內距離自己定時已耗用時間最近(在當前執行個體定時時間之前,或與當前執行個體定時時間一致)的上遊分鐘周期執行個體。

小時任務依賴分鐘任務

天任務依賴其他任務

細分情境

依賴與運行情況

示意圖

天任務依賴同周期天任務

  • 上遊天任務未設定自依賴

    預設下遊天任務的周期執行個體掛載依賴至同周期的上遊天任務周期執行個體。

  • 上遊天任務設定自依賴

    上遊天任務設定自依賴,下遊天任務依賴上遊天任務時存在跨周期依賴。

    說明

    自依賴(即依賴上一周期:本節點(自依賴)會跨天依賴,當昨天最後一個周期執行個體未運行完成,會導致今天的任務無法調度。

天任務依賴同周期天任務

天任務依賴當天小時任務

  • 小時任務未設定自依賴

    下遊天任務會依賴上遊小時任務當天產生的所有小時周期執行個體,即待小時任務當天所有周期資料加工完成後,天任務才會對小時任務當天所有資料進行加工清洗。

    說明

    若天任務只需依賴指定的小時周期執行個體,您可為小時任務設定自依賴(即依賴上一周期:本節點(自依賴),當該小時周期執行個體運行成功後,天任務便會自動調度。

  • 小時任務設定自依賴

    下遊天任務會依賴距離其定時已耗用時間最近(在當前執行個體定時時間之前,或與當前執行個體定時時間一致)的上遊小時周期執行個體。

天任務依賴當天小時任務

天任務依賴昨天的小時或分鐘任務

  • 小時、分鐘任務未設定自依賴

    下遊天任務會依賴上遊任務昨天產生的所有小時或分鐘周期執行個體。

  • 小時、分鐘任務設定自依賴

    下遊天任務會依賴上遊任務昨天產生的最後一個小時或分鐘周期執行個體。

以天任務依賴昨天的小時任務樣本。天任務依賴昨天的小時任務

分鐘任務依賴其他任務

細分情境

依賴說明

示意圖

分鐘任務依賴小時任務

  • 分鐘任務未設定自依賴

    下遊分鐘任務的周期執行個體,依賴距離其定時已耗用時間最近(在當前執行個體定時時間之前,或與當前執行個體定時時間一致)的小時周期執行個體,並且不重複依賴。

    說明

    該情境存在多個下遊分鐘周期執行個體,依賴同一個上遊小時周期執行個體的情況。

  • 分鐘、小時任務均設定自依賴

    下遊分鐘任務的周期執行個體,依賴自己上一周期執行個體;並且根據就近原則,依賴距離自己定時已耗用時間最近(在當前執行個體定時時間之前,或與當前執行個體定時時間一致)的上遊小時周期執行個體。

分鐘任務依賴小時任務

分鐘任務依賴天任務

  • 分鐘任務未設定自依賴

    下遊分鐘任務當天產生的所有分鐘周期執行個體依賴天任務。當天任務到達定時已耗用時間且執行完成後,分鐘任務才可執行。

    說明
    • 天任務運行完成後,定時時間已到的分鐘周期執行個體會並發執行。若不希望執行個體並發執行,可為分鐘任務設定自依賴(即依賴上一周期:本節點(自依賴)

    • 分鐘任務不同執行個體之間的執行互不影響。

  • 分鐘任務設定自依賴

    • 僅下遊分鐘任務產生的首個周期執行個體會依賴天任務,其他周期執行個體直接依賴自己的上一周期執行個體。

    • 天任務及上一周期的分鐘執行個體執行完成後,當前周期的分鐘執行個體才會啟動調度。此時,即使定時已耗用時間已到,分鐘周期執行個體也不會並發執行。

    說明

    自依賴(即依賴上一周期:本節點(自依賴)會跨天依賴,當昨天最後一個周期執行個體未運行完成,會導致今天的任務無法調度。

分鐘任務依賴天任務

其他任務依賴周、月、年任務

當天、小時、分鐘任務依賴周、月、年任務時,周、月、年調度任務在非調度時間內會產生空跑執行個體。該執行個體不會真實跑資料,不佔用資源,也不阻塞下遊任務執行。

以“天任務依賴未設定自依賴的周任務”情境樣本:

  • 上遊周任務:每周一、周五正常調度執行;周二、周三、周四、周六、周日將產生空跑執行個體,到達定時已耗用時間後空跑執行個體將直接置為成功狀態,不會真實執行代碼邏輯。空跑執行個體不會影響下遊執行個體的正常運行。

  • 下遊天任務:每天會定時產生調度執行個體,且依賴上遊周任務每天產生的執行個體(包括空跑執行個體)。待上遊周任務每天的執行個體運行完成且成功後,將會觸發下遊對應的執行個體運行。

image