本文檔介紹了調度標準包中的概覽報表(LHMPackageOverview.xls)的進階能力,允許使用者通過編輯表格修改工作流程、節點的部分調度屬性,以及實現黑名單操作。
1 什麼是LHM調度標準包?
調度標準包是LHM調度遷移鏈路的中間產物,是為實現N2N調度遷移而建立的調度資訊統一描述層(標準資料結構)。
標準包中包含一個概覽報表檔案(LHMPackageOverview.xls),是對轉換結果任務流、節點、資源、函數、資料來源基本資料的匯總展示。
2 概覽報表進階能力
LHM允許使用者通過編輯概覽報表以修改部分常用調度屬性,以及實現黑名單操作。
2.1 操作方式
操作方式如下:
概覽報表進階操作將在調度遷移的下一階段的初始化中生效:
1、對匯出工具輸出包修改後,調度轉換工具會在初始化時擷取修改內容並使之生效;
2、對轉換工具輸出包修改後,目標端匯入工具會在初始化時擷取修改內容並使之生效。
2.2 修改工作流程調度屬性
報表中工作流程的部分屬性被允許更改,允許更改的欄位以藍色字型標識。
屬性名稱 | 說明 | 類型 | 取值 | 範例 |
ID | 工作流程ID | 唯讀 | / | 16373885761152 |
名稱 | 工作流程名稱 | 唯讀 | / | TestWorkflow2 |
路徑 | 工作流程所在路徑 | 唯讀 | / | ds3_0410 |
責任人 | / | 讀寫 | / | admin |
備忘 | / | 讀寫 | / | 這是一個測試工作流程123 |
調度參數 | 工作流程級參數 | 讀寫 | JSON格式;允許修改、增加、刪除 | {"prop1":"value1","prop2":"value2"} |
調度資訊 | Cron運算式 | 讀寫 | 符合Cron運算式規範 | 00 00 * * * * ? |
執行個體產生方式 | / | 讀寫 | IMMEDIATELY: 發布後即時產生執行個體 T_PLUS_1: T+1次日產生執行個體。 | T_PLUS_1 |
包含節點的個數 | / | 唯讀 | / | 3 |
源端ID(若任務流由遷移而來) | 進階功能 | 唯讀 | / | / |
按節點類型分別統計(多列) | / | 唯讀 | / | / |
2.3 修改節點調度屬性
報表中節點的部分屬性被允許更改,允許更改的欄位以藍色字型標識。
屬性名稱 | 說明 | 類型 | 取值 | 範例 |
ID | / | 唯讀 | / | 16373881518720 |
名稱 | / | 唯讀 | / | Node1 |
責任人 | / | 讀寫 | / | admin |
備忘 | / | 讀寫 | / | 這是一個測試節點123 |
所屬WorkflowID | / | 唯讀 | / | 16373885761152 |
所屬WorkflowName | / | 唯讀 | / | TestWorkflow2 |
類型 | / | 讀寫 | / | SQL |
相關資料來源類型 | / | 讀寫 | / | MYSQL |
相關資料來源 | / | 讀寫 | / | test_mysql_123 |
調度參數1 | 工作流程級參數 | 讀寫 | JSON格式;允許修改、增加、刪除 | {"prop1":"value1","prop2":"value2"} |
指令碼參數提取1 | 指令碼中的參數引用 | 讀寫 | JSON格式;允許修改、增加、刪除 | {"$(param1)":"${Param1}"} |
調度資訊 | Cron運算式 | 讀寫 | 符合Cron運算式規範 | 00 00 * * * * ? |
執行個體產生方式 | / | 讀寫 | IMMEDIATELY: 發布後即時產生執行個體 T_PLUS_1: T+1次日產生執行個體。 | T_PLUS_1 |
調度類型 | / | 讀寫 | NORMAL: 正常調度 PAUSE: 暫停調度 SKIP: 空跑調度 | NORMAL |
重跑類型 | / | 讀寫 | ALL_ALLOWED: 運行成功或失敗後皆可重跑 ALL_DENIED: 運行成功或失敗後皆不可重跑 FAILURE_ALLOWED: 運行成功後不可重跑,運行失敗後可以重跑 | ALL_ALLOWED |
調度資源群組 | DataWorks調度資源群組 | 讀寫 | DataWorks通用/調度資源群組ID | Serverless_res_group_580581087550304_692540198941344 |
計算CU | DataWorks計算CU | 讀寫 | Float型 | 0.25 |
鏡像 | DataWorks鏡像 | 讀寫 | 鏡像ID | System_emr_datalake_5151_ 20240731 |
Data Integration資源群組(僅DI) | DataWorks整合資源群組 | 讀寫 | DataWorks通用/整合資源群組ID | Serverless_res_group_580581087550304_692540198941344 |
Data IntegrationCU(僅DI) | DataWorksData IntegrationCU | 讀寫 | Float型 | 0.5 |
源端ID(若任務流由遷移而來) | 進階功能 | 唯讀 | / | / |
註腳1: 使用方式詳見章節 2.2.1 節點與代碼中的變數處理。
2.3.1 節點與代碼中的變數處理
2.3.1.1 不同調度引擎在節點變數上的差異
不同調度引擎調度變數的使用方式存在差異,在調度轉換中需要進行處理,差異主要有以下三類:
· 調用格式差異
常見的調用格式有${param}、$[param]、$(param)。
DataWorks中節點變數以${}、$[]為主,在轉換時,需對節點代碼中引用變數的方式進行處理。
· 調度引擎內建變數差異
調度引擎提供了多種內建變數,常見的是時間變數,此外也提供一些諸如${workflowName}、${taskName}的變數。不同調度引擎提供的內建變數存在差異,時間變數的格式也可能存在差異。在轉換時需要進行替換處理。
另外,DataWorks的內建變數需要在節點參數表中進行定義後方可使用。而有些調度引擎,如WeData,允許使用者在節點代碼中直接使用內建變數。在遷移至DataWorks時需要將這些變數添加到節點變數中。
· 多級參數引用差異
Project級、Workflow級、Node級變數的多級引用規則可能存在差異。
2.3.1.2 利用概覽報表改造節點與代碼中的變數
在遷移情境中,源端和目標端調度引擎節點變數存在大量差異。工具提供了一項通用能力,允許使用者以簡單易用的方式完成變數處理。使用者需在調度轉換完成後、調度匯入前進行處理。
· 節點變數補全
工具支援自動識別節點代碼中引用的變數,並與節點已有變數進行對比。當節點變數中找不到該變數時,自動在表格參數列中預設該參數。
識別節點代碼中變數引用的方式是:搜尋代碼中被${}、$[]、$()包裹的子串,並進行去重。
以是一個樣本:指令碼中存在三個疑似變數的子串param1、param2、param3,且節點自訂變數表中不存在相應變數。
工具自動識別了這些子串,並提示在概覽報表中:
工具會自動建立變數名,使用者可通過編輯表格為這些變數補儲值。若存在誤識別的變數,刪除或放置不管即可。
表格也允許通過編輯額外增加節點參數(即使工具沒有預先建立變數名)。
· 節點代碼中變數調用方式替換
由於調用方式存在差異,需要對節點代碼中引用變數的方式進行替換。
以下圖為例,節點代碼中存在param1、param2、param3三個疑似參數的子串。
工具自動識別了這些子串,並構建了一個Map。使用者可以通過更改這個Map,完成節點代碼中變數調用方式的替換。
Key值(冒號前)是節點代碼中的原始串,Value值(冒號後)是待替換的串。
例如,若需要將原先$()和$[]統一替換為${},可將該儲存格修改如下:
{"${param1}":"${param1}","$[param2]":"${param2}","$(param3)":"${param3}"}
替換方式是使用String.replace(CharSequence target, CharSequence replacement)方法,正則不會生效。
使用者也可以通過編輯改儲存格對對代碼中的變數名進行替換。注意,修改變數名需同時更改節點調度變數表。例如,可以將param1替換為P1。
2.4 工作流程黑名單
報表允許通過刪除工作流程子表中的行,使得工具跳過這些工作流程的處理(工作流程黑名單)。
注意!若工作流程存在相互依賴關係,相關聯的工作流程需要同批次處理,不可通過黑名單進行分割。分割會產生異常!