Kettle版本:8.2.0.0-342
MaxCompute JDBC driver版本:3.2.8
Setup
- 下载并安装Kettle
- 下载MaxCompute JDBC driver
- 将MaxCompute JDBC driver置于Kettle安装目录下的lib子目录(data-integration/lib)
- 下载并编译MaxCompute Kettle plugin:https://github.com/aliyun/aliyun-maxcompute-data-collectors
- 将编译后的MaxCompute Kettle plugin置于Kettle安装目录下的lib子目录(data-integration/lib)
- 启动spoon
Job
我们可以通过Kettle + MaxCompute JDBC driver来实现对MaxCompute中任务的组织和执行。
首先需要执行以下操作:
- 新建Job
- 新建Database Connection
JDBC连接串格式为:jdbc:odps:?project=
JDBC driver class为:com.aliyun.odps.jdbc.OdpsDriver
Username为阿里云AccessKey Id
Password为阿里云AccessKey Secret
JDBC更多配置见:https://help.aliyun.com/document_detail/161246.html
之后,可以根据业务需要,通过SQL节点访问MaxCompute。下面我们以一个简单的ETL过程为例:
Create table节点的配置如下:
需要注意:
- 这里Connection需要选择我们配置好的
- 不要勾选Send SQL as single statement
Load from OSS节点配置如下:
需要注意的点同Create table节点。有关更多Load的用法,见:https://help.aliyun.com/document_detail/157418.html
Processing节点配置如下:
需要注意的点同Create table节点。
Transformation
我们可以通过MaxCompute Kettle plugin实现数据流出或流入MaxCompute。
首先新建Transformation,之后新建Aliyun MaxCompute Input节点,配置如下:
MaxComputelnputstep
StepName
AliyunMaxComputelnput
Configureconnection
Endpoint
http://10.101.222.162:8002/odpsc
tunnelendpoint
Accessld
63wd3dptlmb5ocdkj94pxmm
Accesskey
ProjectName
odpsmingyou-test
TableName
testpartition-table
Partition
col3-bar
Fields
TableField
col1
col2
Helps
OK
Cancel
在MaxCompute中新建一张空表,schema与test_partition_table一致。
新建Aliyun MaxCompute Output节点,配置如下:
MaxComputeOutputstep
StepName
AliyunMaxcomputeOutput
Configureconnection
Endpoint
http://10.101.222.162:8002/odpsdailyrul
tunnelendpoint
http://10.101.222.143:8089
Accessld
63wd3dpztilmb5ocdkj94pxmm
Accesskey
ProjectName
odpsmingyoutest
TableName
testpartition-table.2
Partition
col3-foo
Truncatebeforeinsert
Fields
StreamField
TableField
col1
col1
col2
col2
OK
Fields
Cancel
Help
执行Transformation,数据便从test_partition_table被下载,后被上传至test_partition_table_2。
其他
设置MaxCompute flags
如图,在执行DDL/DML/SQL之前,可以通过set key=value;的方式配置flags。
SQL
Jobentryname:SQL
Connection
ODPS
Wizard...
Edit...
New...
sQLFromfile
sQLFILename
Browse...
SendSQLassinglestatement?
Usevariablesubstitution?
SQLScriot
setkey-valuei
PREATETABLEKETLIEtEsT(oIng2i
Line2Column51
Help
Cancel
OK
Script模式
暂时无法支持