參數(shù)說明
EMR Workflow支持配置內(nèi)置時間參數(shù)、任務(wù)級別參數(shù)(本地參數(shù))、工作流級別參數(shù)(全局參數(shù))和項目級別參數(shù),同時還支持參數(shù)傳遞功能。
參數(shù)配置
內(nèi)置時間參數(shù)
參數(shù)定義
內(nèi)置時間參數(shù)無需定義,可以直接在任務(wù)中使用。
參數(shù)使用
EMR Workflow支持$[...]
格式的內(nèi)置時間參數(shù),$[yyyyMMddHHmmss]
是可以任意分解組合的,例如$[yyyyMMdd]
、$[HHmmss]
、$[yyyy-MM-dd]
等。您也可以通過以下兩種方式對時間參數(shù)進行修改:
使用
add_months()
函數(shù),該函數(shù)用于加減月份, 第一個入口參數(shù)為[yyyyMMdd]
,表示返回時間的格式;第二個入口參數(shù)為月份偏移量,表示加減多少個月。后 N 年:
$[add_months(yyyyMMdd,12*N)]
前 N 年:
$[add_months(yyyyMMdd,-12*N)]
后 N 月:
$[add_months(yyyyMMdd,N)]
前 N 月:
$[add_months(yyyyMMdd,-N)]
直接加減數(shù)字,在自定義格式后直接“+/-”數(shù)字
后 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]
任務(wù)級別參數(shù)(本地參數(shù))
任務(wù)級別參數(shù)是指針對任務(wù)節(jié)點有效的參數(shù)。在任務(wù)定義頁面配置的自定義參數(shù),默認僅作用于該任務(wù)。如果配置了參數(shù)傳遞則可將該參數(shù)作用到下游任務(wù)中。
參數(shù)定義
在任務(wù)定義頁面,單擊自定義參數(shù)的圖標,新增自定義參數(shù),配置如下圖所示。
參數(shù)示例說明:
dt
:自定義參數(shù)的參數(shù)名。IN
:表示參數(shù)僅能在當(dāng)前節(jié)點使用。如果設(shè)置為OUT,則表示參數(shù)可以向下游傳遞。VARCHAR
:參數(shù)的數(shù)據(jù)類型。$[yyyy-MM-dd]
:參數(shù)對應(yīng)的值。
參數(shù)使用
在任務(wù)定義中,通過${...}
的方式使用本地參數(shù)。
工作流級別參數(shù)(全局參數(shù))
全局參數(shù)是指針對整個工作流的所有任務(wù)節(jié)點都有效的參數(shù),在保存工作流定義時配置。
參數(shù)定義
在保存工作流定義時,可以添加全局參數(shù),填寫對應(yīng)的參數(shù)名稱和參數(shù)值。
參數(shù)使用
在保存工作流定義時,通過${...}
的方式使用全局參數(shù)。
項目級別參數(shù)
項目級別參數(shù)是指針對整個項目中所有工作流都有效的參數(shù)。
參數(shù)定義
在項目管理下的
頁面,單擊創(chuàng)建項目級別參數(shù),填寫對應(yīng)的參數(shù)名稱和參數(shù)值。參數(shù)使用
在任務(wù)定義中,通過${...}
的方式使用項目級別的參數(shù)。
參數(shù)傳遞
EMR Workflow允許在任務(wù)間進行參數(shù)傳遞,目前傳遞方向僅支持上游任務(wù)單向傳遞給下游任務(wù)。
配置參數(shù)傳遞時,需要在上游任務(wù)中配置方向為OUT的自定義參數(shù),聲明該參數(shù)會向下游任務(wù)傳遞。同時需要在上游任務(wù)中增加echo語句,格式為echo "#{setValue(key=value)}"
,其中key為OUT類型參數(shù)的參數(shù)名,value為希望向下游傳遞的參數(shù)值,可以為常量、其他任務(wù)參數(shù)的值或者bash腳本中的變量值。下游任務(wù)無需參數(shù)配置,可以直接通過${...}
的方式使用上游任務(wù)傳遞給下游任務(wù)的參數(shù)。
參數(shù)傳遞示例:
傳遞常量
例如,新增OUT方向的自定義參數(shù)res,通過echo "#{setValue(res=1234)}"
向下游任務(wù)傳遞參數(shù)res=1234。
傳遞任務(wù)參數(shù)
例如,新增IN方向的參數(shù)param=123
,OUT方向的自定義參數(shù)res,通過echo "#{setValue(res=${param})}"
向下游任務(wù)傳遞參數(shù)res為param的值,即123。
傳遞bash變量
例如,新增OUT方向的自定義參數(shù)res,通過echo "#{setValue(res=${RESULT})}"
向下游任務(wù)傳遞參數(shù)res為bash變量RESULT的值,即123。
參數(shù)優(yōu)先級
EMR Workflow中涉及的參數(shù)值的定義來自以下類型:
因為參數(shù)的值存在多個來源,當(dāng)參數(shù)名相同時,就會存在參數(shù)優(yōu)先級的問題。EMR Workflow參數(shù)的優(yōu)先級從高到低為:任務(wù)級別參數(shù)(本地參數(shù)) > 上游任務(wù)傳遞給下游任務(wù)的參數(shù) > 工作流級別參數(shù)(全局參數(shù)) > 項目級別參數(shù)
。