依賴某節點同周期指本節點本周期運行,依賴上遊節點當前周期的資料產出情況(即任務執行情況),待上遊當前周期執行個體執行成功後,本節點才會運行。通常,若當前任務需依賴上遊任務同周期產出的表資料時,可為當前任務設定依賴該上遊任務的同周期任務。DataWorks提供多種同周期依賴配置方式,並支援依賴預覽功能,您可及時查看並調整有誤依賴,保障任務調度符合預期。本文為您介紹同周期依賴的注意事項、配置原理、配置方式等內容。
注意事項
為保障調度依賴配置過程流暢,您需先瞭解調度依賴配置指引。
同周期依賴在DataWorks的DAG圖中以實線的形式展示。
部分複雜情境下,當同周期依賴不滿足預期時,您可設定跨周期依賴。例如,天任務依賴小時任務的情境下,天任務預設依賴小時任務當天所有執行個體。您可通過小時任務自依賴,實現天任務依賴小時任務指定周期。更多複雜情境依賴介紹,詳情請參見必讀:複雜依賴情境調度配置原則與樣本。
為避免生產調度任務由於依賴關係不符合預期導致生產調度延遲,建議在發布任務前,通過預覽依賴功能確認各周期執行個體關係是否符合預期。詳情請參見預覽依賴關係。
配置原則
為提升任務開發效率,建議您在實際開發中使用自動解析功能快速為節點設定依賴關係。基於自動解析進行實際開發時,請遵循以下原則:
節點建立:建議節點名稱與節點產出表名稱一致。
代碼開發:避免多個節點寫入資料至同一張表。
依賴配置:建議將節點產出表配置為節點的輸出。
配置入口及配置說明
進入資料開發節點的編輯頁面,單擊右側導覽列的調度配置,在調度依賴地區配置節點的依賴關係。
配置節點同周期依賴關係時,需在依賴的上遊節點地區,定義當前任務需要依賴哪些上遊任務;在本節點輸出名稱地區,定義其他任務可通過本節點的哪些節點輸出掛載當前節點的依賴關係。
在代碼編輯時,預設基於節點查詢及寫入的表血緣快速為節點設定依賴關係,並且會在節點提交時自動檢測與識別當前依賴關係是否符合資料血緣。詳情請參見血緣關係。您也可根據業務需要,選擇是否啟用提交任務前進行代碼自動解析功能,詳情請參見空間層級管控自動解析。
平台提供基於代碼血緣自動解析、商務程序面板拉線、手動添加等多種方式配置依賴關係,您可按需選擇。詳情請參見配置方式。
若本節點需依賴上遊昨天產出的資料,或小時、分鐘任務依賴自己上一小時或分鐘執行個體,可設定跨周期依賴。詳情請參見配置依賴上一周期(跨周期依賴)。
依賴的上遊節點
用於定義本節點的上遊節點,依賴配置後,上遊節點運行成功後本節點才具備運行條件。此處需填寫上遊節點的節點輸出,作為本節點的輸入。配置依賴的上遊節點時請注意:
所有節點都需要配置依賴的上遊節點:建議根據表血緣關係配置,若無表血緣關係,可基於業務需求選擇依賴工作空間根節點或虛擬節點,詳情請參見調度依賴配置指引。
請確保依賴的上遊節點已提交:提交任務時,若報錯依賴的上遊節點輸出不存在,請確保需依賴的上遊節點已提交。
配置方式如下圖。當使用自動推薦功能設定上遊依賴時,需確保要依賴的上遊任務已提交發布至生產環境,並真實產出該表資料。被推薦的節點需在前一天提交至調度系統,待第二天資料產出後,才可被自動推薦功能識別。因此,自動推薦的節點存在T+1的延遲。
本節點輸出
本節點的輸出是其他節點與本節點建立依賴關係的媒介。其他節點可通過本節點的輸出名稱找到本節點,並通過調度依賴配置,將本節點設定為他的上遊節點。下遊節點設定當前節點依賴後,待下遊節點提交完成,當前節點對應的節點輸出將展示該下遊節點名稱。DataWorks不支援手動在節點輸出介面編輯下遊節點。配置方式如下圖。
若工作空間存在同名節點,可能導致節點輸出同名而提交失敗。刪除已存在下遊依賴的節點輸出可能造成嚴重影響,詳情請參見附錄三:刪除或變更節點輸出的影響。
配置原理
調度依賴配置是將上遊節點的輸出作為下遊節點的輸入,形成節點依賴,建議您根據節點查詢及寫入的表血緣設定節點的調度依賴關係。配置完成後,上遊節點運行完成且運行成功,下遊節點才會啟動運行,保障調度任務在運行時能取到正確的資料。確認表血緣,詳情請參見血緣關係。
您可通過如下三種方式配置,無論哪種方式,其原理不變。
配置方式 | 說明 |
該方式DataWorks將自動為下遊節點添加上遊節點尾碼為_out的輸出,形成節點依賴。 | |
該方式DataWorks將自動解析節點代碼中的表血緣,通過血緣關係配置調度依賴。 | |
通常,當通過自動解析產生的節點調度依賴配置與實際應用不符時,您可使用該方式修改調度依賴。 |
配置方式
通過商務程序面板拉線設定節點依賴
在商務程序面板使用拉線方式設定依賴關係時,DataWorks將自動為下遊節點添加上遊節點_out格式的輸出,形成節點依賴。
當商務程序面板中的依賴連線刪除後,節點調度配置中也會同步刪除該依賴關係。
通過調度配置介面手動添加上遊節點依賴
在調度配置介面,通過輸入某節點的節點輸出,手動添加依賴的上遊節點,格式為projectname.tablename。
通過自動解析功能基於表血緣設定節點依賴
DataWorks支援通過節點代碼中的表血緣快速設定節點依賴。開啟自動解析後,節點產出的表將被自動添加為projectname.tablename格式的節點輸出;節點查詢的表將被自動添加為節點輸入。例如,SELECT一張表,該表將被自動解析為本節點依賴的上遊;INSERT一張表,該表將被自動解析為本節點的輸出。各類型節點自動解析支援的關鍵字,詳情請參見各類型節點自動解析情境。
通過自動解析配置節點依賴的相關介紹如下:
通過自動解析配置節點依賴
自動解析方式配置節點依賴如下圖。
修改自動解析的依賴關係
當自動解析的依賴關係不符合預期,或存在不支援調度依賴的情境(非周期性調度產出資料的表)需手動刪除依賴關係時,您可參考以下內容修改自動解析的依賴關係。
情境及方式
描述
操作及結果樣本
開啟自動解析時,通過代碼刪除輸入輸出
在代碼中執行刪除或添加操作,並重新解析。
刪除或添加後,自動添加相應注釋至自動解析的結果中:
--@exclude_input=刪除輸入
--@exclude_output=刪除輸出
--@extra_output=添加輸出
--@extra_input=添加輸入
關閉自動解析時,編輯自動解析的輸入輸出
DataWorks不支援直接刪除已存在下遊依賴的節點輸出,直接刪除將導致下遊任務執行或取數異常。
建議您先調整下遊業務,在下遊節點移除該上遊依賴,再在上遊節點刪除該節點輸出。
不納入自動解析的情境
DataWorks中的暫存資料表(即工作空間表管理中定義的固定格式的表。例如,
t_
開頭的表),不會被自動解析為本節點的輸出或依賴的上遊節點。自動解析使用注意事項
使用自動解析設定依賴關係時,需保障節點輸出在當前地區下唯一。在DataWorks開發情境下,使用自動解析需注意以下問題:
節點建立:節點預設內建一個同名的節點輸出,若同一個工作空間存在同名節點,需手動修改其中一個節點的節點輸出。
代碼開發:自動解析會將節點的產出表作為節點輸出。若同一個工作空間中,兩個調度節點往同一張表插入資料,自動解析情境下將導致其中一個節點產生報錯,詳情請參見多個節點往同一張表寫資料,自動解析報錯節點輸出名相同。
依賴配置 :對於使用SQL任務加工離線同步任務的產出表的情境,為了方便SQL任務對離線同步任務產出表進行加工時,可通過血緣自動解析快速依賴離線同步任務,您需手動將離線同步節點的產出表配置為節點輸出,或者將離線同步任務產出表名作為離線同步任務節點名(平台會自動建立與節點名相同的節點輸出),否則下遊SQL節點提交時可能報錯當前節點依賴的父節點輸出名${projectname.tablename}不存在,不能提交本節點,請確保擁有該輸出名的父節點已被提交。
後續:確認依賴是否符合預期
配置完成後,為保障任務調度符合預期,您可通過以下操作驗證配置是否正確:
預覽依賴:避免依賴關係不符合預期導致任務調度延遲。
提交檢查:提交節點時確認依賴變更是否符合預期。
周期任務依賴確認:節點發布後,需在營運中心確認生產調度任務的依賴是否符合預期。周期任務為生產環境該任務的最新狀態,同時,周期執行個體的執行個體依賴關係與執行個體產生方式有關。
更多詳情請參見調度依賴關係確認。
附錄一:常見問題
更多常見問題,請參見調度依賴。
附錄二:最佳實務
跨工作空間、同工作空間跨商務程序設定節點依賴,詳情請參見情境3:如何配置跨商務程序、跨工作空間的調度依賴。
附錄三:刪除或變更節點輸出的影響
當節點產出的表資料變更導致節點輸出的變更,或直接手動修改節點輸出時,請注意以下內容:
刪除節點輸出對節點產出的表資料無直接影響。
若節點輸出已存在下遊依賴,此時變更或刪除可能會對下遊任務產生嚴重影響。
節點產出表刪除:當自動解析的節點輸出,由於節點產出表變更導致節點輸出變更時,可能會導致下遊變為孤立節點不被調度,或由於下遊任務缺少資料依賴導致下遊被資料汙染。
節點產出表變更:若當前節點產出的表需轉移至其他節點,請參考刪除或變更節點輸出的影響進行操作。
若某節點輸出存在下遊依賴,刪除該輸出名稱時,建議提前與下遊任務的責任人進行溝通,告知其當前任務的某個輸出要刪除,請及時調整下遊任務的依賴關係,避免下遊任務變為孤立任務。