DataWorks支援分鐘、小時、日、周、月、年等類型的調度任務互相依賴,調度類型不同,任務執行的周期數不同。任務各周期是通過執行個體的方式執行,當上下遊調度依賴的類型不同時,您可通過該文檔瞭解上下遊各周期執行個體如何掛載依賴,即上下遊任務不同周期執行個體的依賴情況。
背景資訊
DataWorks中,調度任務會根據調度類型及周期數產生相應的周期執行個體(例如,小時調度任務每天會根據周期數產生相應數量的小時執行個體),通過執行個體的方式運行任務。周期任務設定的依賴關係,其本質是任務間所產生執行個體的依賴。上下遊任務的調度類型不同,其產生的周期執行個體數及執行個體的依賴情況不同。
DataWorks支援多種調度依賴情境,不同情境的調度任務,可選擇同周期依賴或依賴上一周期。同周期依賴及依賴上一周期,詳情請參見配置同周期調度依賴、配置依賴上一周期(跨周期依賴)。
配置調度依賴前,您需先瞭解以下內容。
序號 | 描述 | 相關文檔 |
1 | DataWorks支援多種調度類型(即分鐘、小時、天、周、月、年),當上下遊調度類型不一致時,DataWorks根據任務定時已耗用時間的就近原則設定調度依賴。 說明
| |
2 | DataWorks上任務一旦設定依賴,即表示上下遊任務間存在資料依賴。無論下遊任務定時已耗用時間為幾點,均需等上遊任務執行完成後,下遊才滿足可執行條件。 | |
3 | 您可通過具體情境樣本,進一步理解設定依賴的就近原則。 | 情境包括:
|
掛載依賴:就近原則
DataWorks的周期任務運行時會產生多個周期執行個體,下遊周期執行個體會依賴上遊周期執行個體(該上遊執行個體需在當前下遊執行個體的定時已耗用時間之前產生)。
通常,若不指定需掛載至某個周期執行個體,下遊周期執行個體掛載依賴時會遵循就近原則,即依賴距離其定時已耗用時間最近(在當前執行個體的定時時間之前,或與當前執行個體的定時時間一致),且未被其他周期執行個體依賴的上遊周期執行個體。不同情境的依賴原則具體如下。
下遊任務的定時已耗用時間若早於上遊任務,即便到達下遊任務的定時時間,該任務也不會被調度,需等待上遊任務運行完成後才會調度運行。
根據就近原則掛載依賴時,對於下遊任務當天的第一個執行個體,如果上遊沒有比它更早的執行個體,則下遊預設依賴上遊當天的第一個執行個體。
情境 | 說明 | 示意圖 |
小時、分鐘任務互相依賴情境 | 任務依賴與周期執行個體的定時時間有關
| 小時、分鐘任務互相依賴的細分情境概覽如下圖。 小時任務依賴小時任務樣本如下圖。 |
任務依賴與周期執行個體的定時時間無關 小時任務依賴小時任務,或分鐘任務依賴分鐘任務,並且上下遊節點的周期數(即當天產生的執行個體個數)一致,將按照周期數一一對應,設定依賴關係。 | ||
天任務依賴小時或分鐘任務 |
|
各細分調度情境的依賴及運行情況詳情介紹,請參見附錄:複雜依賴情境匯總。
依賴關係對任務執行的影響
下遊任務一旦掛載依賴,若上遊任務非運行成功狀態,即使到達下遊任務的定時已耗用時間,該任務也不會執行。
例如,下遊小時任務B依賴上遊天任務A。
天任務A:定時已耗用時間設定為
07:00
。小時任務B:定時已耗用時間設定為
00:00
、08:00
、16:00
。
若天任務A未運行完成,即便到了下遊小時任務B的定時已耗用時間00:00
,該任務也不會運行。下遊任務B的最早實際已耗用時間為07:00
。
附錄:複雜依賴情境匯總
不同周期任務的細分依賴情境及其運行情況如下。
下遊任務的定時已耗用時間若早於上遊任務,即便到達下遊任務的定時時間,該任務也不會被調度,需等待上遊任務運行完成後才會調度運行。
根據就近原則掛載依賴時,對於下遊任務當天的第一個執行個體,如果上遊沒有比它更早的執行個體,則下遊預設依賴上遊當天的第一個執行個體。
小時任務依賴其他任務
細分情境 | 依賴及運行說明 | 示意圖 |
小時任務依賴小時任務 |
| |
小時任務依賴天任務 |
| |
小時任務依賴分鐘任務 |
|
天任務依賴其他任務
細分情境 | 依賴與運行情況 | 示意圖 |
天任務依賴同周期天任務 |
| |
天任務依賴當天小時任務 |
| |
天任務依賴昨天的小時或分鐘任務 |
| 以天任務依賴昨天的小時任務樣本。 |
分鐘任務依賴其他任務
細分情境 | 依賴說明 | 示意圖 |
分鐘任務依賴小時任務 |
| |
分鐘任務依賴天任務 |
|
其他任務依賴周、月、年任務
當天、小時、分鐘任務依賴周、月、年任務時,周、月、年調度任務在非調度時間內會產生空跑執行個體。該執行個體不會真實跑資料,不佔用資源,也不阻塞下遊任務執行。
以“天任務依賴未設定自依賴的周任務”情境樣本:
上遊周任務:每周一、周五正常調度執行;周二、周三、周四、周六、周日將產生空跑執行個體,到達定時已耗用時間後空跑執行個體將直接置為成功狀態,不會真實執行代碼邏輯。空跑執行個體不會影響下遊執行個體的正常運行。
下遊天任務:每天會定時產生調度執行個體,且依賴上遊周任務每天產生的執行個體(包括空跑執行個體)。待上遊周任務每天的執行個體運行完成且成功後,將會觸發下遊對應的執行個體運行。