DataWorks Shell節點面向資料開發工程師,支援標準Shell指令碼的無互動式執行,適用於OSS檔案處理、工具調用等自動化任務。該節點原生整合ossutil,可通過設定檔或命令列參數安全訪問 OSS,並支援調度參數注入、資源引用及基於自訂鏡像的運行環境擴充,滿足生產級調度與營運需求。
許可權說明
進行節點開發的RAM帳號已被添加至對應工作空間中,並具有開發或空間管理員角色許可權。詳情請參見:為工作空間增加空間成員。
資料處理節點選型
DataWorks提供多種資料處理節點類型,您可根據業務情境選擇合適的節點完成大批量資料清洗任務,不限於Shell指令碼。
-
離線同步節點:適合大規模資料移轉和轉換,支援多種異構資料來源間的批量資料同步。
-
MaxCompute SQL節點:適合基於SQL的海量資料ETL處理,支援分散式運算。
-
Shell節點(本文):適合調用外部工具或執行自訂指令碼邏輯。
-
賦值節點配合for-each節點:適合迴圈批量處理,可遍曆資料集逐條執行操作。
使用說明
-
文法限制
-
支援標準Shell文法,不支援互動性文法。
-
-
運行環境與網路訪問
-
Shell節點支援Serverless資源群組(推薦)或舊版獨享調度資源群組執行。如需購買使用Serverless資源群組,詳情請參見使用Serverless資源群組。
-
Serverless資源群組上運行Shell節點時,如果您需要訪問的目標端有白名單限制,請添加Serverless資源群組對應IP至目標端應用。
-
使用Serverless資源群組,單任務支援最大配置
64CU,建議不超過16CU,以避免CU過大導致資源不足,影響任務啟動。
-
-
擴充開發環境
-
如任務需要特定的開發環境支援,可使用DataWorks提供的自訂鏡像功能,定製化構建任務執行所需的鏡像。更多資訊,請參見自訂鏡像。
-
-
資源與多指令碼調用
-
避免在Shell節點中啟動大量子進程,由於目前Shell節點沒有資源限制,大量子進程可能會影響運行在該調度資源群組上的其他任務。
-
任務代碼大小不能超過128 KB。
-
快速入門
下面將以一個輸出"Hello DataWorks!"樣本,帶您完成Shell節點的建立、調試、配置與發布全流程。
節點開發
-
登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的,在下拉框中選擇對應工作空間後單擊進入數據開發。
-
滑鼠移至上方至
表徵圖,單擊,在新建節點對話方塊輸入節點名稱及路徑。 -
在指令碼編輯區內輸入標準shell代碼(不支援互動式文法):
echo "Hello DataWorks!" -
完成代碼開發後,單擊
,選擇目標資源群組和鏡像,執行通用Shell節點任務。 -
指令碼通過調實驗證後,在右側單擊調度配置,完成調度時間屬性,資源屬性等生產級調度策略配置,以支撐節點按計劃周期性自動執行。配置節點調度屬性,詳情請參見節點調度配置。
節點發布與營運
進階用法
引用資源
-
DataWorks支援通過資源管理將需要在Shell節點中使用的資源上傳至DataWorks,詳情請參見資源管理。
說明資源需要提交後才可被節點引用。若生產任務需使用該資源,還需將該資源發布至生產環境。詳情請參見發布任務。
-
在資料開發左側分類樹下找到已上傳的資源。
-
按右鍵該資源,選擇引用資源,則該資源將被引用至當前節點中。您可在節點編輯頁面,通過編寫代碼運行該資源。
說明引用成功後,系統將自動在指令碼頂部插入形如
##@resource_reference{resource_name}的聲明注釋。該注釋是 DataWorks 識別資源依賴、在任務運行時自動掛載對應資源至執行環境的必要標識,請勿手動修改或刪除。
使用調度參數
調度參數以位置參數形式注入 Shell 節點,不支援自訂變數名:DataWorks 將您在節點調度配置中設定的調度參數值,按順序作為 $1、$2、$3 … 等位置參數傳遞給 Shell 指令碼,當參數數量超過9時,需使用 ${10}、${11} 等大括弧文法以確保正確解析。多個參數值需用空格分隔,且順序必須與指令碼中引用的位置嚴格一致。
本樣本中:
-
內建參數$1賦值取業務時間:$bizdate。
-
自訂參數$2賦值取業務時間:${yyyymmdd}。
-
自訂參數$3賦值取業務時間: $[yyyymmdd]。
-
若某個參數值包含空格,可用引號包裹,此時引號內的整個內容被視為一個獨立參數。
-
關於更多配置及使用調度參數資訊,詳情請參見配置並使用調度參數。
使用ossutil訪問OSS
DataWorks Shell節點原生支援阿里雲OSS命令列工具 ossutil,支援Bucket 管理、檔案上傳/下載、大量操作等任務。您可通過設定檔方式或命令列參數方式配置訪問憑證使用ossutil訪問OSS。
-
通過命令列參數方式使用ossutil訪問OSS,詳情可參見:命令列參數方式訪問OSS。
-
通過設定檔方式使用ossutil訪問OSS,詳情可參見:設定檔方式訪問OSS。
附錄:指令碼退出碼說明
根據指令碼退出碼可進一步判斷指令碼是否運行成功。
-
退出碼0:表示成功。
-
退出碼-1:表示進程被終止。
-
退出碼2:需要平台自動重跑一次任務。
-
其它退出碼:表示失敗。
以下為Shell節點執行成功(退出碼為 0)時的標準作業記錄樣本。
INFO Exit code of the Shell command 0
INFO --- Invocation of Shell command completed ---
INFO Shell run successfully!
基於Shell底層機制,Shell節點中整個指令碼的退出碼 = 最後一條被執行命令的退出碼。
相關文檔
瞭解如何在Shell節點使用Python 2或Python 3命令運行Python指令碼:詳情請參見Shell類型節點運行Python指令碼。
表徵圖,在彈出導航頁中依次選擇