全部產品
Search
文件中心

DataWorks:節點調度配置

更新時間:Jan 16, 2026

專案目錄區的節點及工作流程往往都是需要周期性調度的,故我們需要在節點或工作流程的調度配置面板配置調度相關屬性,包括調度周期、調度依賴、調度參數等。本文為您介紹調度配置的相關內容。

前提條件

  • 已建立節點。DataWorks基於節點進行任務開發,不同類型的引擎任務在DataWorks上被封裝為不同類型的節點,您可根據業務需要,選擇合適的節點使用。詳情請參見節點開發

  • 已開啟工作空間調度開關。僅當DataWorks工作空間開啟啟用調度周期開關後,工作空間中的任務才可以根據其配置自動調度運行。您需進入工作空間的調度設定頁面,開啟相應開關,詳情請參見系統設定

注意事項

  • 任務的調度配置僅用於定義任務調度運行時的相關屬性,任務需通過發布流程發布至生產環境後,才會根據該配置進行最終調度。

  • 調度時間僅定義任務預期執行時間,其實際執行時間還受上遊執行情況控制,關於任務執行條件說明,詳情請參見任務運行診斷

  • DataWorks支援多種類型任務互相依賴,操作前,建議您先查看複雜依賴情境調度配置原則與樣本文檔瞭解DataWorks在該情境下預設依賴的情況。

  • DataWorks上,調度任務會根據調度類型及周期數產生相應的查看周期執行個體(例如,小時調度任務每天會根據周期數產生相應數量的小時執行個體),並通過周期執行個體的方式自動調度運行該任務。

  • 在使用調度參數的情況下,DataWorks調度任務各周期代碼入參由該周期對應的定時時間以及您調度參數運算式最終決定。各周期代碼入參與調度參數配置與替換的關係,請參見調度參數來源及其運算式

  • 工作流程包括本身工作流程節點以及內部節點,依賴關係較為複雜,本文僅介紹單獨節點的依賴及調度說明,工作流程調度依賴關係的詳細說明,請參見周期工作流程

進入調度配置頁面

  1. 進入DataWorks工作空間列表頁,在頂部切換至目標地區,找到目標工作空間,單擊操作列的快速進入 > Data Studio,進入Data Studio。

  2. 進入調度配置頁面。

    1. 在資料開發(Data Studio)介面,您需找到目標節點,進入該節點的編輯頁面。

    2. 單擊節點編輯頁面右側導覽列的調度配置,進入節點調度配置頁面。

配置節點調度屬性

在節點的調度配置頁面,您需要分別配置節點的調度參數調度策略調度時間調度依賴節點輸出參數

(可選)調度參數

若您在編輯節點代碼時,在代碼中定義了變數,需在此處對該變數進行賦值。

調度參數是根據任務調度的業務時間及調度參數的取值格式自動替換為具體的值,實現任務調度時間內參數的動態替換。

配置調度參數

您可以通過如下兩種方式定義調度參數。

定義調度參數方式

描述

配置圖示

添加參數

同一個調度任務可以配置多個調度參數,當需使用多個調度參數時,可以單擊添加參數添加。

  • 您可以手動為調度參數賦值,詳情請參見調度參數來源及其運算式

  • 您也可以單擊參數操作列的image,將當前節點定義的參數與上遊節點的輸出參數綁定。

image

載入代碼中的參數

用於自動識別當前任務代碼中定義的變數名,並將識別到的變數名添加為調度參數,便於調度任務後續使用。

說明

通常,代碼中是按照${自訂變數名}方式來定義變數名。

Pyodps節點、通用Shell節點對於變數名的定義方式與其他節點存在差異。各類型節點的調度參數配置格式,詳情請參見各類型節點的調度參數配置樣本

image

調度參數支援格式

具體請參見調度參數來源及其運算式

確認生產環境任務的調度參數配置

為避免周期調度任務運行時,由於調度參數不符合預期而導致任務運行出現問題,建議在任務發布後,前往生產營運中心的周期任務介面,查看生產環境下該周期任務的調度參數配置情況。查看周期任務,詳情請參見管理周期任務

調度策略

調度策略用於定義周期調度任務中執行個體的產生方式、調度類型、計算資源與資源群組等資訊。

參數

說明

執行個體產生方式

節點提交發布至生產環境調度系統後,平台會根據節點配置的執行個體產生方式產生自動調度的周期執行個體

  • T+1次日產生:節點發布至生產環境後第二天自動調度,您可在周期執行個體頁面查看任務的執行情況。若您當天需執行任務,可選擇對該任務執行補資料操作。補資料選擇業務時間昨天今天的周期執行個體執行情況一致。

  • 發布後即時產生:節點發布至生產環境後當天自動調度,您可在周期執行個體頁面查看任務的執行情況。建立任務時,選擇此方式時,該任務當天是否真實跑資料,是否空跑,與任務的定時時間及發布時間有關。發行的生產任務修改調度周期時,DataWorks會根據最新調度情況替換已產生的未來時間段的執行個體,但到期的執行個體不會刪除。

調度類型

  • 正常調度

    • 使用情境:正常狀態啟動並執行周期任務,並且產生的周期執行個體也是正常狀態運行。

    • 影響說明:按照調度周期配置的定時時間啟動調度,正常執行任務(即會真實跑資料)。

      當前節點正常執行後,也會觸發下遊節點正常調度執行,通常任務的調度類型預設選中該項。

  • 暫停調度

    • 使用情境:凍結狀態的周期任務,其產生的周期執行個體也為凍結狀態。當前節點不可執行,並且阻塞下遊節點執行。

      當某類商務程序在一定時間內不需要執行時,可選擇此調度類型來凍結商務程序根節點。當業務需要執行時,可對商務程序根節點執行解凍操作。解凍任務,詳情請參見任務凍結與解凍

    • 影響說明:按照調度周期配置的定時時間啟動調度,但節點狀態被置為暫停(即不會真實跑資料)。

      調度到該任務時,系統會直接返回失敗,並且會阻塞依賴當前節點的下遊節點執行。

  • 空跑調度

    • 使用情境:當某個節點在一定時間內不需要執行,並且不阻塞其下遊節點執行時,可選擇此類型調度。

    • 影響說明:按照調度周期配置的定時時間啟動調度,但該節點為空白跑狀態(即不會真實跑資料)。

      調度到該任務時,系統會直接返回成功(執行時間長度為0秒),不會真正執行任務(即執行日誌為空白)、不會阻塞依賴當前節點的下遊節點執行(即下遊節點正常執行)、也不會佔用資源。

逾時定義

設定逾時時間後,如果任務運行時間長度超過逾時時間,任務將自動終止運行。其配置說明如下:

  • 逾時時間對周期執行個體、補資料執行個體、測試執行個體均生效。

  • 逾時時間預設值為3~7天,系統根據實際負載情況動態調整預設的任務逾時時間,範圍為3~7天不等。

  • 手動設定逾時時間時,最大值可設定為168小時(7天)。

重跑屬性

配置節點在特定情況下重跑。

重跑屬性不可為空,其支援的類型及應用情境如下:

  • 運行成功或失敗後均可重跑:如果節點多次重跑不會影響結果,可選擇使用該重跑類型。

  • 運行成功後不可重跑,運行失敗後可以重跑:如果節點運行一次成功後,重跑後會影響運行結果,而運行失敗後重跑不會影響結果,可選擇使用該重跑類型。

  • 運行成功或失敗後皆不可重跑:如果節點不管運行成功或失敗,重跑後都會影響運行結果(例如,某些資料同步節點),可選擇使用該重跑類型。

    說明
    • 當選擇該類型時,如果系統出現故障,在故障恢複後,系統也不會自動重跑相應節點。

    • 不支援配置失敗自動重跑

失敗自動重跑

開啟後,當任務運行失敗(不包括使用者主動終止任務運行)時,調度系統會根據重跑次數和重跑間隔自動觸發重跑。

  • 重跑次數:周期任務調度執行失敗的情況下,預設自動重跑的次數。

    重跑次數最少配置為1(即任務出錯後自動重跑1次),最多配置為10(即任務出錯後會自動重跑10次)。您可以根據業務需要進行修改。

  • 重跑間隔:預設每次重跑的間隔為30分鐘,最小支援設定為1分鐘,最大支援設定為30分鐘。

說明
  • 您可以在調度配置頁面,設定工作空間層級的預設重跑次數和重跑間隔。詳情請參見系統設定

  • 任務執行時,超過了逾時時間導致的節點失敗,自動重跑配置將不生效。

計算資源

請配置任務運行所需的引擎資源。如需建立新的資源,您可以通過計算資源管理進行操作。

計算配額

支援在MaxCompute SQL節點MaxCompute Script節點配置任務運行所需的計算配額(Quota),為計算作業提供計算資源(CPU及記憶體)。

調度資源群組

配置任務運行使用的調度資源群組,按需選擇即可。

  • 如果需要修改建立任務預設配置的資源群組,可前往調度設定頁面操作,詳情請參見系統設定

  • 如果需要修改已建立任務的資源群組,詳情請參見通用參考:切換資源群組

資料集

單擊image為節點添加已建立的資料集,僅Shell節點Python節點Notebook 基礎開發節點支援開發過中添加資料集。

  • 資料集:下拉選擇當前空間內建立的所有資料集。

    • 選擇Object Storage Service類型的資料集時,首次需要授權允許資源群組訪問Bucket,一個Bucket只需授權一次即可。

    • 選擇Apsara File Storage NAS類型的資料集時,當前DataWorks資源群組網路未與NAS掛載點連通,則需調整VPC網路,確保資源群組與NAS掛載點連通。

      說明

      DataWorks資源群組綁定的VPC與NAS掛載點綁定的VPC一致時,網路即可正常連通。

  • 掛載路徑:會自動讀取資料集預設配置的掛載路徑,支援手動修改。

  • 進階配置:為節點開發讀取OSS或NAS資料集時,可通過配置不同的資料集來調整資料集的讀取方法掛載協議等配置。

  • 唯讀:開啟唯讀,資料開發工作單位在運行期間將僅允許讀取資料,無法將資料寫入OSS或NAS。

調度時間

調度時間用於配置調度任務自動執行的周期、時間等資訊。

說明

如果是工作流程中的節點,則調度時間相關參數在工作流程頁面的調度配置中設定,如果是非工作流程中的節點,則在各節點的調度配置中設定調度時間

注意事項

  • 任務調度頻率與上遊任務周期無關

    任務多久調度一次與任務本身定義的調度周期有關,與上遊任務調度周期無關。

  • DataWorks支援不同調度周期的任務互相依賴

    DataWorks中,調度任務會根據調度類型及周期數產生相應的周期執行個體(例如,小時調度任務每天會根據周期數產生相應數量的小時執行個體),通過執行個體的方式運行任務。周期任務設定的依賴關係,其本質是任務間所產生執行個體的依賴。上下遊任務的調度類型不同,其產生的周期執行個體數及執行個體的依賴情況不同。不同調度周期的上下遊依賴情況,請參見調度依賴方式選擇(跨周期依賴)

  • 非調度時間任務會空跑

    DataWorks上非每天調度的任務(例如周、月調度的任務)在非調度時間內會空跑,當到達任務定義的調度時間後立即返回成功狀態。若下遊存在日調度任務,會調起該下遊日調度任務正常執行。即上遊空跑,下遊調度任務正常根據節點定義的調度時間執行。

  • 任務執行時間說明

    此處僅設定任務預期調度時間,任務的實際執行時間受多種因素影響。例如,上遊定時時間、任務執行資源情況、任務實際運行條件等,詳情請參見任務運行條件說明

配置調度時間

參數

說明

調度周期

調度周期即任務在調度情境下自動執行的周期數,用於定義在生產環境調度系統中,多久會真實執行一次節點中的代碼邏輯。調度任務會根據調度類型及周期數產生相應的周期執行個體(例如,小時調度任務每天會根據周期數產生相應數量的小時執行個體),通過周期執行個體的方式自動調度運行周期任務。

  • 分鐘調度:每天指定的時間段內,調度任務按N * 指定分鐘的時間間隔運行一次。分鐘調度的時間間隔最小粒度為1分鐘。

  • 小時調度:每天指定的時間段內,調度任務按N * 1小時的時間間隔運行一次。

  • 日調度:調度節點每天在指定的定時時間運行一次。建立周期任務時,日調度預設的時間周期為每天0點運行一次。您可根據需要自行指定已耗用時間點。

  • 周調度:調度任務每周的特定幾天,在特定時間點自動運行一次。

  • 月調度:調度任務在每月的特定幾天,在特定時間點自動運行一次。

  • 年調度:調度任務在每年的特定幾天,在特定時間點自動運行一次。

重要

周調度、月調度和年調度在非調度時間內仍會每日產生執行個體,執行個體顯示為成功狀態,但實際會空跑,不會真實執行任務。

生效日期

調度節點在有效日期內生效並自動調度,超過有效期間的任務將不會自動調度。此類任務為到期任務,您可在營運大屏查看到期任務數量,並根據情況對其做下線等處理。

Cron運算式

該運算式根據時間屬性配置自動產生,無需配置。

調度依賴

DataWorks上任務的調度依賴是指調度情境下節點間的上下遊依賴關係。在DataWorks中,上遊節點任務運行完成且運行成功,下遊節點任務才會開始運行。配置調度依賴後,可保障調度任務在運行時能擷取到正確的資料(即當前節點依賴的上遊節點成功運行後,DataWorks通過節點的運行狀態識別到上遊表的最新資料已產生,下遊節點再去取數),避免下遊節點取資料時,上遊表資料還未正常產出,導致下遊節點取數出現問題。

注意事項

  • 節點依賴關係配置後,預設在任務調度運行時,下遊節點運行條件之一為其依賴的上遊節點均已執行成功,否則當前任務取數會存在品質問題。

  • 任務實際已耗用時間除了取決於任務本身的定時時間(即任務在調度情境下的預期執行時間)外,還取決於上遊任務的完成時間(即下遊任務實際執行時間還取決於上遊任務的定時時間)。若上遊任務未完成運行,即便下遊任務的定時時間早於上遊任務,下遊任務也不會運行。任務運行條件,詳情請參見任務運行診斷

配置調度依賴

DataWorks任務依賴最終是為了保障下遊取數無誤,實際是上下遊表資料的血緣依賴。您可根據業務需求,選擇是否需要基於表的血緣關係配置調度依賴。節點的調度依賴配置流程如下。

image

由於節點依賴關係配置後,預設節點的上下遊產出表存在強依賴關係(即下遊表資料的產出需要依賴上遊產出的表資料),因此,任務在配置調度依賴時,需確認是否存在強血緣依賴,即確認當前任務是否會因為上遊資料未產出而導致當前任務取數出現問題。若下遊節點中表資料的產出,需依賴上遊節點產出的表資料,則認為上下遊節點的表存在強血緣依賴關係。

序號

說明

為避免當前任務執行時間不符合預期,您可先評估表之間是否存在強依賴關係,確認是否需要基於血緣關係配置調度依賴。

確認當前情境是否為周期調度任務產出的表資料。不在DataWorks周期調度產出的表資料,DataWorks無法通過任務運行情況監控資料產出,因此,部分表不支援配置調度依賴。

非DataWorks周期性調度產出資料的表包括但不限於以下幾類:

  • 即時同步產出的表

  • 從本地上傳到DataWorks的表

  • 維表

  • 手動任務產出的表

  • 非DataWorks上調度節點產出的周期性變更的表

③④

根據需要依賴上遊昨天還是今天的資料、小時分鐘任務是否要依賴自己上一個小時或分鐘執行個體,來選擇依賴上遊同周期還是上一周期

  • 同周期調度依賴:下遊依賴上遊今天產出的表資料。

  • 上一周期調度依賴(跨周期依賴):

    • 下遊依賴上遊昨天產出的表資料。

    • 小時、分鐘任務特殊依賴情境:

      • 依賴自己上一個小時或分鐘的周期執行個體資料,可設定跨周期依賴。

      • 小時任務依賴小時任務,如果上下遊的定時時間完全相同,設定跨周期依賴可以實現下遊2點的執行個體依賴上遊1點的執行個體。分鐘任務依賴分鐘任務,原理相同。

說明

根據血緣配置時,調度依賴情境選擇配置細節,請參見調度依賴方式選擇(同周期依賴)

⑤⑥⑦

依賴關係配置完成並發布生產後,可在營運中心周期任務中查看任務依賴關係是否符合預期。

自訂節點配置依賴

若DataWorks上任務間不存在強血緣依賴(例如,不強依賴上遊某個分區資料,僅取上遊目前時間點最大分區資料),或依賴的資料非周期調度節點產出的表資料(例如,本地上傳的表資料),則您可自訂節點的依賴關係。自訂依賴配置具體如下:

  • 依賴工作空間根節點

    例如,同步任務中的上遊資料來源於其他業務資料庫,SQL類型任務對即時同步任務產出的表資料進行加工等情境,您可直接選擇掛載依賴至工作空間根節點下。

  • 依賴虛擬節點

    當工作空間中商務程序較多或較複雜時,您可通過虛擬節點管理該商務程序,將需要統一管控的節點掛載依賴至某虛擬節點,使工作空間下資料流轉路徑更加清晰。例如,控制商務程序整體調度時間、控制商務程序整體調度與凍結(即不調度)。

節點輸出參數

在上遊節點定義輸出參數及其取值後,在下遊節點定義輸入參數(取值引用上遊節點的輸出參數),即可在下遊節點中使用此參數擷取上遊節點傳遞過來的取值。

注意事項

  • 節點輸出參數僅作為下遊節點的輸入參數(在下遊節點調度參數地區添加參數,通過參數操作列的image關聯上遊參數),部分節點無法直接將上遊節點的查詢結果傳遞到下遊,如果您需要將上遊節點的查詢結果傳遞到下遊節點,可以使用賦值節點,詳情可參見文檔:賦值節點

  • 支援節點輸出參數的節點為:EMR HiveEMR Spark SQLODPS ScriptHologres SQLAnalyticDB for PostgreSQLMySQL節點。

配置節點輸出參數

節點輸出參數的取值分為常量變數兩種類型。

完成輸出參數的定義並提交當前節點後,即可在下遊節點配置調度參數時,綁定上遊節點的輸出參數作為下遊節點的輸入參數。

image

  • 參數名:定義的輸出參數名稱。

  • 參數值:輸出參數的取值。取實值型別包括常量和變數:

    • 常量為固定字串。

    • 變數包括系統支援的全域變數、調度內建參數、自訂參數。

配置節點關聯角色

DataWorks關聯角色允許為特定任務節點指定一個預設的 RAM 角色,任務在運行時將通過阿里雲 STS (Security Token Service) 動態擷取該角色的臨時訪問憑證。您的代碼無需明文填寫永久 AK,即可獲得訪問其他雲資源的許可權。

重要
  • 資源群組限制:僅支援運行在Serverless 資源群組的節點。

  • 節點類型限制:僅支援Python、Shell、Notebook、PyODPS 2、PyODPS 3節點。

1、在 DataWorks 節點中配置關聯角色

  1. 在節點編輯介面的右側,找到並單擊調試配置

  2. 在調度配置面板中,切換到關聯角色頁簽。

  3. RAM角色下拉框中,選擇您準備好的 RAM 角色。

    重要

    如果下拉框為空白,或找不到所需的角色,請參考配置關聯角色(使用STS方式)訪問其他雲產品完成RAM角色配置。

  4. 配置完成後,提交節點。此配置僅對調試運行生效。

2、在代碼中擷取和使用臨時憑證

配置關聯角色後,DataWorks 會在任務運行時,將擷取到的臨時憑證注入到運行環境中。您可以通過以下兩種方式在代碼中擷取它們。

方式一:讀取環境變數(推薦 Shell, Python)

系統會自動化佈建以下三個環境變數,您可以直接在代碼中讀取。

  • LINKED_ROLE_ACCESS_KEY_ID:臨時存取金鑰 ID。

  • LINKED_ROLE_ACCESS_KEY_SECRET:臨時存取金鑰 Secret。

  • LINKED_ROLE_SECURITY_TOKEN:臨時安全性權杖。

程式碼範例 (Python):

重要

此案例在運行中需選擇安裝oss2的Python自訂鏡像,相關操作請參見自訂鏡像

import os
import oss2

# 1. 從環境變數擷取臨時憑證
access_key_id = os.environ.get('LINKED_ROLE_ACCESS_KEY_ID')
access_key_secret = os.environ.get('LINKED_ROLE_ACCESS_KEY_SECRET')
security_token = os.environ.get('LINKED_ROLE_SECURITY_TOKEN')

# 檢查是否成功擷取
if not all([access_key_id, access_key_secret, security_token]):
    raise Exception("Failed to get linked role credentials from environment variables.")

# 2. 使用臨時憑證初始化 OSS 用戶端
# 假設您已為角色授予了訪問 'your-bucket-name' 的許可權
auth = oss2.StsAuth(access_key_id, access_key_secret, security_token)
bucket = oss2.Bucket(auth, 'http://oss-<regionID>-internal.aliyuncs.com', 'your-bucket-name')

# 3. 使用用戶端訪問 OSS 資源
try:
    # 列出 bucket 中的檔案
    for obj in oss2.ObjectIterator(bucket):
        print('object name: ' + obj.key)
    print("Successfully accessed OSS with linked role.")
except oss2.exceptions.OssError as e:
    print(f"Error accessing OSS: {e}")

程式碼範例 (Shell):

#!/bin/bash
access_key_id=${LINKED_ROLE_ACCESS_KEY_ID}
access_key_secret=${LINKED_ROLE_ACCESS_KEY_SECRET}
security_token=${LINKED_ROLE_SECURITY_TOKEN}

# 訪問OSS,需替換regionID、bucket_name和file_name為真實資訊
echo "ID:"$access_key_id
echo "token:"$security_token
ls -al /home/admin/usertools/tools/

# 樣本為通過ossutil從OSS指定路徑下載檔案到本地test_dw.py,並輸出檔案內容。
/home/admin/usertools/tools/ossutil64 cp --access-key-id $access_key_id --access-key-secret $access_key_secret --sts-token $security_token --endpoint http://oss-<regionID>-internal.aliyuncs.com oss://<bucket_name>/<file_name> test_dw.py
echo "************************ 擷取成功 ************************,列印結果"
cat test_dw.py
方式二:使用 Credentials Client (推薦 Python)

程式碼範例 (Python):

重要

此案例在運行中需選擇安裝oss2alibabacloud_credentials的Python自訂鏡像,相關操作請參見自訂鏡像

from alibabacloud_credentials.client import Client as CredentialClient
import oss2

# 1. 使用 SDK 自動擷取憑證
# 它會自動尋找環境變數中的 LINKED_ROLE_* 等憑證資訊
cred_client = CredentialClient()
credential = cred_client.get_credential()

access_key_id = credential.get_access_key_id()
access_key_secret = credential.get_access_key_secret()
security_token = credential.get_security_token()

if not all([access_key_id, access_key_secret, security_token]):
    raise Exception("Failed to get linked role credentials via SDK.")

# 2. 使用憑證初始化 OSS 用戶端
auth = oss2.StsAuth(access_key_id, access_key_secret, security_token)
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'your-bucket-name')

# 3. 訪問 OSS
print("Listing objects in bucket...")
for obj in oss2.ObjectIterator(bucket):
    print(' - ' + obj.key)
print("Successfully accessed OSS with linked role via SDK.")

3、運行與驗證

重要
  • Shell、Python:任務運行時,將使用指定的RAM角色訪問其他雲產品。

  • PyODPS:訪問其他雲產品(如OSS)時,使用您設定的 RAM 角色身份;但訪問 MaxCompute 資料時,仍然自動使用計算資源(專案層級)配置的訪問身份。

配置調度屬性

節點完成調試後,需將調試配置中的關聯角色同步至調度配置關聯角色 > RAM角色。發布後,任務將以該角色的身份運行。

若在調試配置中配置自訂鏡像,需同步設定到調度配置中。

在營運中心查看執行角色

任務運行結束後,在營運中心查看任務執行個體的詳細資料,以確認是否成功使用指定的角色。

  1. 進入營運中心 > 周期任務營運 > 周期執行個體

  2. 找到您啟動並執行節點執行個體,單擊進入詳情頁。

  3. 在執行個體詳情的屬性地區,查看執行身份欄位,此處展示本次運行實際使用的關聯角色ARN。

    ARN為資源唯一標識,詳細說明可參見權限原則基本元素

附錄參考