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