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