DataWorks的調度依賴是指周期調度節點間的上下遊依賴關係。通過節點的依賴關係有序調度運行上下遊節點,即當上遊節點運行成功後,下遊節點才會啟動運行,保障適時的產出有效業務資料。本文為您介紹調度依賴的配置指引,避免因調度依賴配置有誤導致資料異常,配置前建議先瞭解此內容。
背景資訊
DataWorks上任務的調度依賴是指調度情境下節點間的上下遊依賴關係。在DataWorks中,上遊節點任務運行完成且運行成功,下遊節點任務才會開始運行。配置調度依賴後,可保障調度任務在運行時能擷取到正確的資料(即當前節點依賴的上遊節點成功運行後,DataWorks通過節點的運行狀態識別到上遊表的最新資料已產生,下遊節點再去取數),避免下遊節點取資料時,上遊表資料還未正常產出,導致下遊節點取數出現問題。
注意事項
節點依賴關係配置後,預設在任務調度運行時,下遊節點運行條件之一為其依賴的上遊節點均已執行成功,否則當前任務取數會存在品質問題。
任務實際已耗用時間除了取決於任務本身的定時時間(即任務在調度情境下的預期執行時間)外,還取決於上遊任務的完成時間(即下遊任務實際執行時間還取決於上遊任務的定時時間)。若上遊任務未完成運行,即便下遊任務的定時時間早於上遊任務,下遊任務也不會運行。任務運行條件,詳情請參見任務運行診斷。
調度依賴配置指引
DataWorks任務依賴最終是為了保障下遊取數無誤,實際是上下遊表資料的血緣依賴。您可根據業務需求,選擇是否需要基於表的血緣關係配置調度依賴。節點的調度依賴配置流程如下。
方式一:自訂依賴關係
若DataWorks上任務間不存在強血緣依賴(例如,不強依賴上遊某個分區資料,僅取上遊目前時間點最大分區資料),或依賴的資料非周期調度節點產出的表資料(例如,本地上傳的表資料),則您可自訂節點的依賴關係。自訂依賴配置具體如下:
依賴工作空間根節點
例如,同步任務中的上遊資料來源於其他業務資料庫,SQL類型任務對即時同步任務產出的表資料進行加工等情境,您可直接選擇掛載依賴至工作空間根節點下。
依賴虛擬節點
當工作空間中商務程序較多或較複雜時,您可通過虛擬節點管理該商務程序,將需要統一管控的節點掛載依賴至某虛擬節點,使工作空間下資料流轉路徑更加清晰。例如,控制商務程序整體調度時間、控制商務程序整體調度與凍結(即不調度)。
方式二:基於血緣配置依賴關係
由於節點依賴關係配置後,預設節點的上下遊產出表存在強依賴關係(即下遊表資料的產出需要依賴上遊產出的表資料),因此,任務在配置調度依賴時,需確認是否存在強血緣依賴,即確認當前任務是否會因為上遊資料未產出而導致當前任務取數出現問題。若下遊節點中表資料的產出,需依賴上遊節點產出的表資料,則認為上下遊節點的表存在強血緣依賴關係。
序號 | 目標 | 描述 |
①② | 確認上下遊表是否存在強血緣關係。 | 為避免當前任務執行時間不符合預期,您可先評估表之間是否存在強依賴血緣關係,確認是否需要基於血緣關係配置調度依賴。 |
③ | 確認當前情境是否為周期調度任務產出的表資料。 | 不在DataWorks周期調度產出的表資料,DataWorks無法通過任務運行情況監控資料產出,因此,部分表不支援配置調度依賴。 |
④⑤⑥ | 基於血緣確認調度依賴的配置方式並配置調度依賴。 | 根據需要依賴上遊昨天還是今天的資料、小時分鐘任務是否要依賴自己上一個小時或分鐘執行個體,來選擇依賴上遊同周期還是上一周期。 |
⑦⑧⑨ | 預覽依賴關係。 | 依賴關係配置完成後,可通過預覽依賴、對比代碼解析結果,查看周期任務確認配置時,發布前,發布生產後任務依賴關係是否符合預期。 |
基於血緣配置調度依賴
DataWorks中,表血緣關係體現為產出表資料的節點間的依賴關係。在確認存在強血緣依賴後,您需要判斷需要依賴上遊昨天還是今天的資料、小時分鐘任務是否要依賴自己上一個小時或分鐘執行個體,來選擇依賴上遊同周期還是上一周期。
DataWorks支援多種類型任務互相依賴,並且會根據調度類型及周期數產生相應的執行個體上下遊節點的周期數不同,各周期的依賴關係不同。為避免配置的依賴不符合預期,建議使用該功能提前預覽上下遊調度周期數與定時時間不一致情境下,其執行個體依賴情況。詳情請參見:必讀:複雜依賴情境調度配置原則與樣本。
調度依賴情境選擇與配置
在任務實際調度時,產出資料的代碼中會使用調度參數來指定依賴哪個周期執行個體的資料,具體確認邏輯如下。
調度參數會根據任務調度的業務日期、定時時間及參數的取值格式自動替換為具體的值,實現在任務調度時間內參數的動態替換,進而實現任務查詢與產出的表分區變更。
基於表血緣選擇調度依賴方式的步驟如下:
確認表的血緣關係
為保障任務調度產出的表資料符合預期,您需明確上下遊表當天產出的業務資料,確保下遊表當天擷取的資料為上遊表當天的產出資料。
若為小時、分鐘周期調度任務,則需明確每個小時、分鐘周期執行個體產出的表分區資料。
若無法看到上遊調度參數配置(例如,依賴其他空間下的表情境),如何確認表血緣,可參見確認表血緣。
基於血緣選擇調度依賴的配置方式
明確表血緣後,您可根據血緣關係確定調度依賴的配置方式(即同周期依賴還是依賴上一周期)。
調度依賴配置方式
血緣關係
下遊依賴上遊今天產出的表資料。
下遊依賴上遊昨天產出的表資料。
小時、分鐘任務特殊依賴情境:
依賴自己上一個小時或分鐘的周期執行個體資料,可設定跨周期依賴(即依賴上一周期:本節點(自依賴))。
小時任務依賴小時任務,如果上下遊的定時時間完全相同,設定跨周期依賴可以實現下遊2點的執行個體依賴上遊1點的執行個體。分鐘任務依賴分鐘任務,原理相同。
不支援配置依賴的情境
DataWorks的調度依賴主要用於保障周期調度節點定時更新的表資料,確保下遊節點取數無誤。因此,不在DataWorks上通過調度節點更新的表,DataWorks無法直接監控。非DataWorks周期性調度產出資料的表包括但不限於以下幾類:
即時同步產出的表
從本地上傳到DataWorks的表
維表
手動任務產出的表
非DataWorks上調度節點產出的周期性變更的表
非DataWorks周期性調度產出資料的表,可自訂依賴關係,關於自訂依賴關係,詳情請參見調度依賴配置指引。
調度依賴關係確認
調度依賴配置後,您可通過以下方式確認依賴關係是否正常。
確認方式 | 說明 |
用於提前預覽節點當前配置的調度依賴是否符合預期。 DataWorks支援分鐘、小時、日、周、月、年等類型的調度任務互相依賴,調度類型不同,任務執行的周期數不同。 任務各周期是通過執行個體的方式執行,當上下遊調度依賴的類型不同時,其執行個體依賴情況不同。例如,天任務依賴小時任務,小時任務依賴分鐘任務,或存在跨周期依賴的情境,可使用此功能保障任務滿足預期已耗用時間,避免由於依賴關係不符合預期導致任務延遲。複雜依賴情境調度配置,詳情請參見必讀:複雜依賴情境調度配置原則與樣本。 | |
用於提交節點時,確認目前的版本節點依賴變更是否符合預期,及變更對生產的影響。 開啟自動解析時,為保障生產資料正常產出,您需要在提交節點時,對節點調度變更的相關操作進行二次確認。可使用該功能保障依賴變更不影響生產任務資料產出。 | |
用於節點發布後,在營運中心確認生產調度任務的依賴是否符合預期。
|
常見問題
以下為典型情境說明,更多調度依賴的常見問題,請參見依賴關係。
節點唯一性相關
開發環境與生產環境節點形態不同但節點唯一:同一節點在開發環境和生產環境中的調度依賴配置可以不同,即同一個節點在開發環境和生產環境可以擁有兩種不同的形態,但節點唯一。
下線節點前需在開發環境與生產環境同時移除下遊依賴:由於節點唯一性,為保障下遊任務取數及運行無誤,DataWorks在下線上遊任務前,需先在下遊節點調度移除,然後重新設定下遊節點需要依賴的上遊節點,並提交發布。確保開發環境及生產環境該依賴都被移除後,才可下線上遊任務。
與執行個體產生方式相關
建立節點時,請確保上下遊節點的執行個體產生方式相同,避免因為執行個體產生方式不同,上遊節點當天產生執行個體,下遊節點隔天產生執行個體,導致下遊執行個體變為情境:節點孤立。
變更已存在節點的調度周期,並且選擇發布後及時產生執行個體時,修改節點的調度依賴時,已產生的執行個體不會自動刪除,節點發布後當天周期執行個體的依賴情況會比較奇怪,詳情請參見即時轉執行個體對當天周期執行個體依賴關係的影響。