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。
您可以进入AccessKey管理页面获取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;