同周期依賴指本節點等待當前周期的上遊節點執行個體執行成功後再運行,適用於消費上遊當天( 當前周期)產出資料的情境。DataWorks提供多種同周期依賴配置方式,並支援依賴預覽功能,您可及時查看並調整有誤依賴,保障任務調度符合預期。
配置原理
調度依賴通過節點輸出和節點輸入的匹配關係建立:將上遊節點的輸出名稱作為下遊節點的輸入,即形成依賴關係。配置完成後,上遊節點運行成功,下遊節點才會啟動運行。配置前,建議根據節點讀寫的表血緣確認依賴對象和依賴類型,請參見調度依賴配置指引。
節點輸出
節點輸出即本節點輸出名稱,是其他節點與本節點建立依賴關係的媒介(標識符),而不是節點實際產出的資料。其他節點通過本節點的輸出名稱找到本節點,從而將本節點設定為上遊依賴。
DataWorks會為每個節點自動產生兩個輸出名:
-
projectName.randomNumber_out:全域唯一,且不支援修改和刪除。
-
projectName.nodeName:帶節點名的輸出,修改。節點名稱變更後,此輸出名不變。
同時,DataWorks也支援通過手動添加或者從代碼解析輸入輸出,其中不同的節點類型對代碼解析的支援情況可參考:代碼解析結果對比。
節點輸入
節點輸入即本節點依賴的上遊節點,可通過指定節點的輸出名稱(推薦)、節點名稱或者節點ID指定。
其中節點ID需要上遊節點提交至生產環境才會產生。
配置原則
為提升任務開發效率,建議您在實際開發中使用代碼解析功能快速為節點設定依賴關係。基於代碼解析進行實際開發時,請遵循以下原則:
-
節點建立:建議節點名稱與節點產出表名稱一致。
-
代碼開發:避免多個節點寫入資料至同一張表。
-
依賴配置:建議將節點產出表配置為節點的輸出。
配置入口和方式
進入資料開發節點的編輯頁面,單擊右側導覽列的調度配置,在調度依賴地區配置節點的依賴關係。
-
依賴的上游節點:定義當前任務需要依賴哪些上遊任務。
-
本節點輸出名稱:定義其他任務可通過本節點的哪些輸出掛載依賴關係。
-
在代碼編輯時,預設基於表血緣設定依賴關係,並在提交時自動檢測依賴是否符合資料血緣。您可選擇是否啟用提交前自動解析功能,詳情請參見調度設定。
-
若本節點需依賴上遊昨天產出的資料,或小時/分鐘任務依賴自己上一周期執行個體,請設定配置依賴上一周期(跨周期依賴)。
-
若本節點與上遊節點的調度周期頻率不一致,如天任務依賴小時任務,或者依賴不同頻率的小時任務等複雜情境,可參見:必讀:複雜依賴情境調度配置原則與樣本。
您可通過如下三種方式配置,無論哪種方式,其原理不變。
通過代碼解析表血緣設定節點依賴
代碼解析是通過解析節點代碼中的表血緣,自動化佈建節點的輸出名稱和依賴的上遊節點。解析後,節點產出的表將被自動添加為projectname.tablename格式的節點輸出;節點查詢的表將被自動添加為節點輸入。
例如,SELECT一張表,該表將被自動解析為本節點依賴的上遊;INSERT一張表,該表將被自動解析為本節點的輸出。各類型節點自動解析支援的關鍵字,詳情請參見各類型節點自動解析情境。
-
配置依賴
代碼解析支援手動從代碼中解析輸入輸出和提交前自動解析兩種方式。兩者原理一致,提交前自動解析會在代碼提交時自動解析輸入輸出,並提醒您掛載依賴。
例如:ODPS節點mc2需依賴節點mc1的輸出表
dws_user_info_all_di,節點mc2的代碼內容如下:INSERT OVERWRITE TABLE ads_user_info_1d PARTITION (dt='${workflow.var}') SELECT uid , MAX(region) , MAX(device) , COUNT(0) AS pv , MAX(gender) , MAX(age_range) , MAX(zodiac) FROM dws_user_info_all_di WHERE dt = '${workflow.var}' GROUP BY uid;單擊從代碼中解析輸入輸出後,解析出本節點的輸入為
dws_user_info_all_di表,並且自動匹配到上遊節點的輸出表名和上遊節點名稱:上遊節點輸出名
上遊節點輸出表名
上遊節點名稱
節點ID
工作空間
責任人
調度周期
添加方式
最近運行情況
操作
yunwan_lingyi.dws_user_info_all_di
mc1
-
測試空間
lingyi01_testcloud_com
日
代碼解析
暫無資料
刪除
同時,解析出本節點的輸出為
ads_user_info_1d表,對應解析情況如下:輸出名
輸出表名
下遊節點名稱
責任人
添加方式
下遊節點影響基準
操作
old_ide.505487297_out
-
-
-
系統預設添加
-
刪除
old_ide.mc2
-
-
-
手動添加
-
刪除
yunwan_lingyi.ads_user_info_1d
yunwan_lingyi.ads_user_info_1d
-
-
代碼解析
-
刪除
至此,節點mc2完成與節點mc1的依賴配置。
-
修改代碼解析的依賴關係
當代碼解析的依賴關係不符合預期,或存在不支援調度依賴的情境(非周期性調度產出資料的表)需手動刪除依賴關係時,您可參考以下內容修改自動解析的依賴關係。
操作
描述
手動刪除解析結果
在依賴的上遊節點列表中中刪除不符合預期的輸入,執行刪除操作,並重新解析。刪除後,自動添加相應注釋至代碼中,防止下次解析再次添加:
--@exclude_input=刪除輸入 --@exclude_output=刪除輸出手動添加輸入輸出
在代碼編輯框中右擊表名,選擇添加輸入或者添加輸出,添加後,自動添加相應注釋至代碼中
--@extra_output=添加輸出 --@extra_input=添加輸入或者也可以參考通過調度配置介面手動添加上遊節點依賴或者通過商務程序面板拉線設定節點依賴的方式來添加依賴。
重要DataWorks不支援直接刪除已存在下遊依賴的節點輸出,直接刪除將導致下遊任務執行或取數異常。建議您先調整下遊業務,在下遊節點移除該上遊依賴,再在上遊節點刪除該節點輸出。
-
不納入自動解析的情境
DataWorks中的暫存資料表(即工作空間表管理中定義的固定格式的表。例如,
t_開頭的表),不會被自動解析為本節點的輸出或依賴的上遊節點。 -
自動解析使用注意事項
使用自動解析設定依賴關係時,需保證節點輸出在當前地區下唯一。在DataWorks開發情境下,使用自動解析需注意以下問題:
-
節點建立:節點預設內建一個同名的節點輸出,若同一個工作空間存在同名節點,需手動修改其中一個節點的節點輸出。
-
代碼開發:自動解析會將節點的產出表作為節點輸出。若同一個工作空間中,兩個調度節點往同一張表插入資料,自動解析情境下將導致其中一個節點產生報錯,詳情請參見多個節點往同一張表寫資料,自動解析報錯節點輸出名相同。
-
依賴配置 :對於使用SQL任務加工離線同步任務的產出表的情境,為了方便SQL任務對離線同步任務產出表進行加工時,可通過血緣自動解析快速依賴離線同步任務,您需手動將離線同步節點的產出表配置為節點輸出,或者將離線同步任務產出表名作為離線同步任務節點名(平台會自動建立與節點名相同的節點輸出),否則下遊SQL節點提交時可能報錯當前節點依賴的父節點輸出名${projectname.tablename}不存在,不能提交本節點,請確保擁有該輸出名的父節點已被提交。
-
通過調度配置介面手動添加上遊節點依賴
在調度配置->調度依賴->依賴的上游節點配置介面,通過輸入某節點的節點輸出/節點名稱/節點ID,手動添加依賴的上遊節點。節點名稱容易出現重複,推薦使用節點輸出進行依賴掛載。
通過商務程序面板拉線設定節點依賴
在商務程序的DAG面板使用拉線方式設定依賴關係時,DataWorks將自動為下遊節點添加上遊節點_out格式的輸出,形成節點依賴。
當商務程序面板中的依賴連線刪除後,節點調度配置中也會同步刪除該依賴關係。
刪除或變更節點輸出的影響
當節點產出的表資料變更導致節點輸出的變更,或直接手動修改節點輸出時,請注意以下內容:
-
刪除節點輸出對本節點產出的表資料無直接影響。
-
若節點輸出已存在下遊依賴,此時變更或刪除可能會對下遊任務產生嚴重影響。
-
節點產出表刪除:當自動解析的節點輸出,由於節點產出表變更導致節點輸出變更時,可能會導致下遊變為孤立節點不被調度,或由於下遊任務缺少資料依賴導致下遊被資料汙染。
-
節點產出表變更:若當前節點產出的表需轉移至其他節點,請參考刪除或變更節點輸出的影響進行操作。
若某節點輸出存在下遊依賴,刪除該輸出名稱時,建議提前與下遊任務的責任人進行溝通,告知其當前任務的某個輸出要刪除,請及時調整下遊任務的依賴關係,避免下遊任務變為孤立任務。
-
後續:確認依賴是否符合預期
配置完成後,為保障任務調度符合預期,您可通過以下操作驗證配置是否正確:
-
預覽依賴:避免依賴關係不符合預期導致任務調度延遲。
-
提交檢查:提交節點時確認依賴變更是否符合預期。
-
周期任務依賴確認:節點發布後,需在營運中心確認生產調度任務的依賴是否符合預期。周期任務為生產環境該任務的最新狀態,同時,周期執行個體的執行個體依賴關係與執行個體產生方式有關。
更多詳情請參見調度依賴關係確認。
常見問題
更多常見問題,請參見調度依賴。
最佳實務
跨工作空間、同工作空間跨商務程序設定節點依賴,詳情請參見情境3:如何配置跨商務程序、跨工作空間的調度依賴。