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)度依賴配置流程如下。調(diào)度依賴

方式一:自定義依賴關(guān)系

若DataWorks上任務(wù)間不存在強血緣依賴(例如,不強依賴上游某個分區(qū)數(shù)據(jù),僅取上游當(dāng)前時間點最大分區(qū)數(shù)據(jù)),或依賴的數(shù)據(jù)非周期調(diào)度節(jié)點產(chǎn)出的表數(shù)據(jù)(例如,本地上傳的表數(shù)據(jù)),則您可自定義節(jié)點的依賴關(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)度依賴

DataWorks中,表血緣關(guān)系體現(xiàn)為產(chǎn)出表數(shù)據(jù)的節(jié)點間的依賴關(guān)系。在確認存在強血緣依賴后,您需要判斷需要依賴上游昨天還是今天的數(shù)據(jù)、小時分鐘任務(wù)是否要依賴自己上一個小時或分鐘實例,來選擇依賴上游同周期還是上一周期。
說明 DataWorks支持多種類型任務(wù)互相依賴,并且會根據(jù)調(diào)度類型及周期數(shù)生成相應(yīng)的實例上下游節(jié)點的周期數(shù)不同,各周期的依賴關(guān)系不同。為避免配置的依賴不符合預(yù)期,建議使用該功能提前預(yù)覽上下游調(diào)度周期數(shù)與定時時間不一致場景下,其實例依賴情況。詳情請參見:必讀:復(fù)雜依賴場景調(diào)度配置原則與示例

調(diào)度依賴場景選擇與配置

在任務(wù)實際調(diào)度時,產(chǎn)出數(shù)據(jù)的代碼中會使用調(diào)度參數(shù)來指定依賴哪個周期實例的數(shù)據(jù),具體確認邏輯如下。
說明 調(diào)度參數(shù)會根據(jù)任務(wù)調(diào)度的業(yè)務(wù)日期、定時時間及參數(shù)的取值格式自動替換為具體的值,實現(xiàn)在任務(wù)調(diào)度時間內(nèi)參數(shù)的動態(tài)替換,進而實現(xiàn)任務(wù)查詢與產(chǎn)出的表分區(qū)變更。
基于血緣配置依賴基于表血緣選擇調(diào)度依賴方式的步驟如下:
  1. 確認表的血緣關(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ù)配置(例如,依賴其他空間下的表場景),如何確認表血緣,可參見確認表血緣
  2. 基于血緣選擇調(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ù),原理相同。

不支持配置依賴的場景

DataWorks的調(diào)度依賴主要用于保障周期調(diào)度節(jié)點定時更新的表數(shù)據(jù),確保下游節(jié)點取數(shù)無誤。因此,不在DataWorks上通過調(diào)度節(jié)點更新的表,DataWorks無法直接監(jiān)控。非DataWorks周期性調(diào)度產(chǎn)出數(shù)據(jù)的表包括但不限于以下幾類:
  • 實時同步產(chǎn)出的表
  • 從本地上傳到DataWorks的表
  • 維表
  • 手動任務(wù)產(chǎn)出的表
  • 非DataWorks上調(diào)度節(jié)點產(chǎn)出的周期性變更的表
非DataWorks周期性調(diào)度產(chǎn)出數(shù)據(jù)的表,可自定義依賴關(guān)系,關(guān)于自定義依賴關(guān)系,詳情請參見調(diào)度依賴配置指引

調(diào)度依賴關(guā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ù)期。
  • 確認生產(chǎn)任務(wù)的調(diào)度依賴

    標(biāo)準(zhǔn)模式工作空間下,節(jié)點依賴關(guān)系在開發(fā)環(huán)境和生產(chǎn)環(huán)境依賴可以不一致。生產(chǎn)環(huán)境節(jié)點的調(diào)度依賴需在數(shù)據(jù)開發(fā)界面配置,并且完成發(fā)布后才會生效。

    節(jié)點發(fā)布后,您可進入運維中心的周期任務(wù)界面,展開當(dāng)前任務(wù)上下游,查看調(diào)度依賴情況。
    重要 周期任務(wù)界面均展示節(jié)點在生產(chǎn)環(huán)境的最新狀態(tài),但周期實例是否存在新加或刪除的依賴,與所選實例生成方式有關(guān)
  • 確認生產(chǎn)任務(wù)的數(shù)據(jù)情況
    調(diào)度依賴確認無誤后,您還需確認上下游節(jié)點的分區(qū)數(shù)據(jù)讀取與寫入情況(即調(diào)度參數(shù)配置是否正確)。避免上游節(jié)點產(chǎn)出的數(shù)據(jù)非當(dāng)前節(jié)點所依賴的數(shù)據(jù),導(dǎo)致下游節(jié)點出現(xiàn)數(shù)據(jù)質(zhì)量問題。
    說明 若任務(wù)發(fā)布流程中存在流程管控,建議在任務(wù)發(fā)布后,進入生產(chǎn)運維中心的周期任務(wù)界面,查看任務(wù)調(diào)度依賴及相關(guān)屬性,若發(fā)現(xiàn)任務(wù)不符合預(yù)期,請確認任務(wù)的發(fā)布流程是否被阻塞。詳情請參見發(fā)布任務(wù)

常見問題

以下為典型場景說明,更多調(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)系的影響