開源任務調度平臺(Apache DolphinScheduler)——功能介紹——參數

2024年2月6日 25点热度 0人点赞

官方文檔 : 「鏈接」

版本 : Version 3.1.7

任務中可能出現參數的地方

任務中可能出現的參數選項,任務不同參數也不同

任務參數

描述

任務名稱

任務的名稱,同一個工作流定義中的節點名稱不能重復。

運行標志

標識這個節點是否需要調度執行,如果不需要執行,可以打開禁止執行開關。

描述

當前節點的功能描述。

任務優先級

worker線程數不足時,根據優先級從高到低依次執行任務,優先級一樣時根據先到先得原則執行。

Worker分組

設置分組後,任務會被分配給worker組的機器機執行。若選擇Default,則會隨機選擇一個worker執行。

任務組名稱

任務資源組,未配置則不生效。

組內優先級

一個任務組內此任務的優先級。

環境名稱

配置任務執行的環境。

失敗重試次數

任務失敗重新提交的次數,可以在下拉菜單中選擇或者手動填充。

失敗重試間隔

任務失敗重新提交任務的時間間隔,可以在下拉菜單中選擇或者手動填充。

CPU 配額

為執行的任務分配指定的CPU時間配額,單位為百分比,默認-1代表不限制,例如1個核心的CPU滿載是100%,16個核心的是1600%。 task.resource.limit.state

最大內存

為執行的任務分配指定的內存大小,超過會觸發OOM被Kill同時不會進行自動重試,單位MB,默認-1代表不限制。該功能由 task.resource.limit.state 控制。

超時告警

設置超時告警、超時失敗。當任務超過"超時時長"後,會發送告警郵件並且任務執行失敗。該功能由 task.resource.limit.state 控制。

資源

任務執行時所需資源文件。

前置任務

設置當前任務的前置(上遊)任務。

延時執行時間

任務延遲執行的時間,以分為單位。

參數分類

  1. 內置參數

1.1.基礎內置參數

變量名

聲明方式

含義

system.biz.date

${system.biz.date}

日常調度實例定時的定時時間前一天,格式為 yyyyMMdd

system.biz.curdate

${system.biz.curdate}

日常調度實例定時的定時時間,格式為 yyyyMMdd

system.datetime

${system.datetime}

日常調度實例定時的定時時間,格式為 yyyyMMddHHmmss

驗證: 通過shell 組件輸出內置參數結果

創建一個shell,輸入內容為內置參數變量,輸出為變量對應的結果

查看日志可以發現內置參數結果可以被正常輸出

1.2. 衍生內置參數(目前沒找到使用指定日期進行加減的方法,演示默認使用的是系統時間.)

  • 支持代碼中自定義變量名,聲明方式:${變量名}。可以是引用 "系統參數"
  • 我們定義這種基準變量為 $[...] 格式的,$[yyyyMMddHHmmss] 是可以任意分解組合的,比如:$[yyyyMMdd], $[HHmmss], $[yyyy-MM-dd] 等
  • 也可以通過以下兩種方式:

1.使用add_months()函數,該函數用於加減月份, 第一個入口參數為[yyyyMMdd],表示返回時間的格式 第二個入口參數為月份偏移量,表示加減多少個月

後 N 年:$[add_months(yyyyMMdd,12*N)]

前 N 年:$[add_months(yyyyMMdd,-12*N)]

後 N 月:$[add_months(yyyyMMdd,N)]

前 N 月:$[add_months(yyyyMMdd,-N)]

驗證: 通過shell 組件輸出衍生內置參數結果

創建一個shell,輸入內容為衍生內置參數變量,輸出為變量對應的結果(add_months()函數的第一個參數是日期的格式不是具體的日期值.)

查看日志可以發現衍生內置參數結果可以被正常輸出

2.直接加減數字 在自定義格式後直接“ /-”數字

後 N 周:$[yyyyMMdd 7*N]

前 N 周:$[yyyyMMdd-7*N]

後 N 天:$[yyyyMMdd N]

前 N 天:$[yyyyMMdd-N]

後 N 小時:$[HHmmss N/24]

前 N 小時:$[HHmmss-N/24]

後 N 分鐘:$[HHmmss N/24/60]

前 N 分鐘:$[HHmmss-N/24/60]

驗證: 通過shell 組件輸出衍生內置參數結果

查看日志可以發現衍生內置參數結果可以被正常輸出

全局參數(註:這裡定義的 qjcs 參數可以被其它任一節點的局部參數引用。)

  1. 作用域

全局參數是指針對整個工作流的所有任務節點都有效的參數,在工作流定義頁面配置。

  1. 使用方式

具體的使用方式可結合實際的生產情況而定,這裡演示為使用 Shell 任務打印出前一天的日期。

  1. 創建 Shell 任務

1. 創建一個 Shell 任務,並在腳本內容中輸入 echo ${qjcs}。此時 qjcs 則為我們需要聲明的全局參數。如下圖所示:

2. 保存工作流,並設置全局參數

全局參數配置方式如下:在工作流定義頁面,點擊“設置全局”右邊的加號,填寫對應的變量名稱和對應的值,保存即可。如下圖所示:

3. 點擊查看變量可以發現我們設置的參數

4. 任務實例查看執行結果

進入任務實例頁面,可以通過查看日志,驗證任務的執行結果,判斷參數是否有效。

本地參數

  1. 作用域

在任務定義頁面配置的參數,默認作用域僅限該任務,如果配置了參數傳遞則可將該參數作用到下遊任務中。

  1. 使用方式

本地參數配置方式如下:在任務定義頁面,點擊“自定義參數”右邊的加號,填寫對應的變量名稱和對應的值,保存即可。

如果要在單個任務中使用參數,請參閱通過自定義參數使用

如果要在任務中使用配置參數並在下遊任務中使用它們:

如果你隻是想要簡單使用,且不使用自定義參數, 請參閱 通過 setValue 和自定義參數 export 本地參數;

如果想要使用自定義參數, 請參閱 通過 setValue 和自定義參數 export 本地參數;

如果想要使用 Bash 參數, 請參閱 通過 setValue 和 Bash 環境變量參數 export 本地參數;

註:本地參數可以在當前任務節點的工作流中,設置其為 OUT 則可以傳遞給下遊的工作流使用,可以參考:參數傳遞

  1. 任務樣例

3.1 通過自定義參數使用

本樣例展示了如何使用本地參數,打印輸出當前日期。創建一個 Shell 任務,並編寫腳本內容為 echo ${bdcs}。點擊配置欄中的自定義參數,配置如下圖所示:

參數說明:

bdcs:參數名

IN:IN 表示局部參數僅能在當前節點使用,

OUT: 表示局部參數可以向下遊傳遞

DATE:數據類型,日期

$[yyyy-MM-dd]:自定義格式的衍生內置參數

保存工作流並運行,查看 Shell 任務輸出日志。

3.2. 通過setValue export 本地參數(使用 '${setValue(set_val="通過setValue export 本地參數")}' 或者 '#{setValue(set_val="通過setValue export 本地參數")}' 設置,下遊都可以通過echo '${set_val}' 獲取對應的值)

如果你想簡單 export 參數然後在下遊任務中使用它們,你可以在你的任務中使用 setValue,你可以將參數統一在一個任務中管理。在 Shell 任務中使用語法 echo '${setValue(set_val="通過setValue export 本地參數")}'(不要忘記單引號) 並添加新的 OUT 自定義參數來 export 它。

註意:

set_val : 隻是起了一個名字,可以隨意指定,保證在自定義參數中的名字一致就行;

在下遊任務中使用語法 echo '${set_val}' 在獲取設定的值。

3.3. 通過setValue和自定義參數 export 本地參數(隻有使用 '#{setValue(set_val="通過setValue export 本地參數")}' 設置,下遊才可以通過echo '${set_val}' 獲取對應的值)

如果你想用自定義參數而不是常量值來實現參數 export,並下遊任務中使用它們,你可以在通過 setValue 和 自定義參數實現,當你想改變參數的值時可以直接改變 “自定義參數”模塊中的值,這讓程序更加容易維護。您可以在 Shell 任務中使用語法 echo "#{setValue(set_val_param1=${val})}"(如果你想要將任何 變量賦值給 setValue 請不要忘記使用雙引號)並添加新的 IN 自定義參數用於輸入變量 val 和 OUT 自定義參數用於 export 參數 set_val_param1。

在下遊任務中使用語法 echo '${set_val_param1}' 在獲取設定的值。

3.4.通過setValue和 Bash 環境變量參數 export 本地參數

如果你想用 bash 變量而不是常量值 export 參數,並在下遊任務中使用它們,你可以在通過 setValue 和 Bash 變量實現,它更靈活,例如你動態獲取現有的本地 或 HTTP 資源獲取設定變量。 您可以使用類似的語法

在下遊任務中使用語法 echo '${set_val_var}' 在獲取設定的值。

3.5.同一個任務中,在自定義參數既添加了非常量參數,又添加了自定義in/out常數參數時,out設置的常量值無法傳遞到下遊.

解決方法:

將常數與非常數的定義分開,在下遊任務中均可調用常數參數了

示例 :

輸出結果