MaxCompute支持您通過ETL工具Kettle實現MaxCompute作業調度。您可以通過拖拽控件的方式,方便地定義數據傳輸的拓撲結構。本文為您介紹如何通過MaxCompute JDBC驅動,連接Kettle和MaxCompute項目并調度作業。
背景信息
Kettle是一款開源的ETL工具,純Java實現,可以運行于Windows、Unix、Linux操作系統,為您提供圖形化的操作界面。Kettle支持豐富的輸入輸出數據源,數據庫支持Oracle、MySQL、DB2等,也支持各種開源的大數據系統,例如HDFS、HBase、Cassandra、MongoDB等。
您可以在Kettle中通過創建Job的方式連接MaxCompute項目,并按照ETL流程調度作業。
前提條件
在執行操作前,請確認您已滿足如下條件:
已創建MaxCompute項目。
更多創建MaxCompute項目操作,請參見創建MaxCompute項目。
已獲取可訪問MaxCompute項目的AccessKey ID和AccessKey Secret。
您可以進入AccessKey管理頁面獲取AccessKey ID和AccessKey Secret。
已下載包含完整依賴JAR包
jar-with-dependencies
的MaxCompute JDBC驅動(v3.2.8及以上版本)。本文中的MaxCompute JDBC驅動示例版本為v3.2.9。
已下載Kettle安裝包并解壓至本地路徑。
本文中的Kettle示例版本為8.2.0.0-342。
操作流程
將MaxCompute JDBC驅動放置于Kettle的驅動目錄下,后續Kettle可通過該驅動訪問MaxCompute項目。
通過配置連接參數,連接Kettle及MaxCompute項目。
在Spoon界面創建作業調度流程并配置作業信息。
基于創建好的作業調度流程運行作業。
通過SQL編譯器查看作業調度結果。
步驟一:放置MaxCompute JDBC驅動
將MaxCompute JDBC驅動JAR包(例如odps-jdbc-3.2.9-jar-with-dependencies.jar
)放置于Kettle的安裝目錄data-integration/lib
下。
步驟二:Kettle連接MaxCompute項目
在Kettle的安裝目錄
data-integration
下,雙擊Spoon.bat
(Windows系統)或者雙擊Spoon
(macOS系統),即可啟動Spoon,進入Spoon界面。在頂部菜單欄,選擇 ,創建Kettle作業,用于后續創建作業調度流程。
在主對象樹頁簽的DB連接處單擊右鍵選擇新建。
在數據連接對話框單擊一般,并配置下表所列參數信息。
參數
說明
連接名稱
新建數據連接的名稱,用于在系統中區分不同數據庫的連接。例如MaxCompute。
連接類型
固定選擇Generic database。
連接方式
固定選擇Native (JDBC) 。
Dialect
固定選擇Hadoop Hive 2 。
自定義連接URL
連接MaxCompute項目的URL。格式為
jdbc:odps:<MaxCompute_endpoint>?project=<MaxCompute_project_name>
。配置時刪除<>
符號。參數說明如下:<MaxCompute_endpoint>:必填。MaxCompute項目所屬區域的Endpoint。
各地域的Endpoint信息,請參見Endpoint。
<MaxCompute_project_name>:必填。待連接的目標MaxCompute項目名稱。
此處為MaxCompute項目名稱,非工作空間名稱。您可以登錄MaxCompute控制臺,左上角切換地域后,即可在項目管理頁面查看到具體的MaxCompute項目名稱。
自定義驅動類名稱
用于連接MaxCompute項目的驅動程序。固定取值為com.aliyun.odps.jdbc.OdpsDriver。
用戶名
具備目標MaxCompute項目訪問權限的AccessKey ID。
您可以進入AccessKey管理頁面獲取AccessKey ID。
密碼
AccessKey ID對應的AccessKey Secret。
單擊測試,連接成功后依次單擊確定、確認,完成Kettle和MaxCompute連接。
步驟三:創建作業調度流程
您可以在Spoon界面的核心對象頁簽通過創建、關聯核心對象(作業)的方式構造作業調度流程。
此處以通過LOAD命令從OSS加載數據,并寫入MaxCompute內部表的ETL過程為例為您介紹操作流程,對應示例數據請參見通過內置Extractor(StorageHandler)導入數據。該ETL過程涉及的作業可根據核心對象類型拆解如下。
在Spoon界面,單擊核心對象頁簽。
基于上圖拆解的核心對象,從左側導航欄中依次拖拽核心對象組件至右側作業區域中,并按照下圖所示結構連接各核心對象。
連接核心對象的方式為:選中核心對象后,按住Shift同時單擊核心對象,即可出現連接線,連接至目標核心對象即可。
在腳本類型的核心對象上單擊右鍵,選擇編輯作業入口,在SQL對話框配置下表所列參數信息后,單擊確定。依次完成所有腳本類型核心對象配置。
參數
說明
作業項名稱
調度作業的名稱。例如Create table、Load from OSS、Processing。
數據庫連接
訪問的數據連接名稱。即步驟二中創建的數據連接。例如MaxCompute。
將SQL腳本作為一條語句發送
不選中。
SQL腳本
調度作業對應的SQL腳本。示例中腳本類型核心對象對應的SQL腳本如下:
Create table
CREATE TABLE ambulance_data_csv_load ( vehicleId INT, recordId INT, patientId INT, calls INT, locationLatitute DOUBLE, locationLongtitue DOUBLE, recordTime STRING, direction STRING);
Load from OSS
LOAD OVERWRITE TABLE ambulance_data_csv_load FROM LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/' STORED BY 'com.aliyun.odps.CsvStorageHandler' WITH serdeproperties ( 'odps.properties.rolearn'='acs:ram::xxxxx:role/aliyunodpsdefaultrole', --AliyunODPSDefaultRole的ARN信息,可通過RAM角色管理頁面獲取。 'odps.text.option.delimiter'=',' );
Processing
INSERT OVERWRITE TABLE ambulance_data_csv SELECT * FROM ambulance_data_csv_load;
步驟四:運行作業調度流程
在創建的作業調度流程界面,單擊左上角的圖標后,在執行作業對話框右下角單擊執行。
可選:如果彈出如下對話框,單擊是,保存創建的作業調度流程,并按照提示指引命名。例如mc。
通過調度流程界面的DAG圖或執行結果區域查看運行狀態,當呈現下圖所示狀態時,表明作業調度流程運行結束。
步驟五:查看作業調度結果
作業調度流程運行完成后,通過簡單SQL腳本查看數據是否成功寫入目標表中。
在Spoon界面單擊主對象樹頁簽,在創建的Kettle作業(例如mc)下單擊DB連接。
在創建的數據連接(例如MaxCompute)上單擊右鍵,選擇SQL編輯器。
在簡單SQL編輯器對話框,輸入SQL腳本并單擊執行,即可在預覽數據對話框查看到查詢結果。
SQL腳本如下:
SELECT * FROM ambulance_data_csv;