ETL工具Kettle入门
Kettle是Java编写的一套开源的ETL解决方案。
一、下载Kettle
访问 https://sourceforge.net/projects/pentaho/ 下载7.1版本,然后解压缩,找一个mysql的驱动jar包(如mysql-connector-java-5.1.49.jar)复制到kettle的lib目录下
运行 Spoon.bat 即可启动Kettle
(注:Spoon.bat文件可以编辑,修改JAVA_HOME以及JVM参数)
二、准备数据库和数据
创建数据库kettle,四张表和初始化数据
create database kettle;
-- 创建表
CREATE TABLE user (
userid int(10) DEFAULT NULL COMMENT '用户ID',
username varchar(10) DEFAULT NULL COMMENT '用户姓名',
sex varchar(1) DEFAULT NULL COMMENT '性别',
position varchar(20) DEFAULT NULL COMMENT '职业',
age int(3) DEFAULT NULL COMMENT '年龄'
) ENGINE= InnoDB DEFAULT CHARSET=utf8;
-- 插入数据
INSERT INTO user VALUES (1, '陈xx', '女', '学生', 20);
INSERT INTO user VALUES (2, '王xx', '男', '工程师', 30);
INSERT INTO user VALUES (3, '李xx', '女', '医生', 40);
CREATE TABLE product (
productid int(10) DEFAULT NULL COMMENT '产品ID',
productname varchar(20) DEFAULT NULL COMMENT '产品名称'
) ENGINE= InnoDB DEFAULT CHARSET=utf8;
INSERT INTO product VALUES (1, '手机');
INSERT INTO product VALUES (2, '电脑');
INSERT INTO product VALUES (3 , '水杯');
CREATE TABLE orders (
orderid int(10) DEFAULT NULL COMMENT '订单ID',
userid int(10) DEFAULT NULL COMMENT '用户ID',
productid int(10) DEFAULT NULL COMMENT '产品ID',
buytime datetime DEFAULT NULL COMMENT '购买时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 插入数据
INSERT INTO orders VALUES (1, 1, 1, '2017-6-1 15:02:02');
INSERT INTO orders VALUES (2, 1, 2, '2017-6-2 15:02:22');
INSERT INTO orders VALUES (3, 1, 3, '2017-6-2 15:02:36');
INSERT INTO orders VALUES (4, 2, 1, '2017-6-6 15:02:52');
INSERT INTO orders VALUES (5, 3, 2, '2017-6-9 16:55:24');
INSERT INTO orders VALUES (6, 2, 2, '2017-7-14 14:01:36');
CREATE TABLE order_all (
userid int(10) DEFAULT NULL COMMENT '用户ID',
username varchar(10) DEFAULT NULL,
sex varchar(1) DEFAULT NULL ,
position varchar(20) DEFAULT NULL,
age int(3) DEFAULT NULL,
orderid int(10) DEFAULT NULL COMMENT '订单ID',
productid int(10) DEFAULT NULL COMMENT '产品ID',
buytime datetime DEFAULT NULL COMMENT '购买时间',
productname varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
三、转换和作业
Kettle的转换是由一序列的步骤完成的数据抽取、转换和加载的工作。作业是由定时调度或者命令对转换做的调用。
本文最终创建的转换如下图
四、新建转换
启动Kettle后,新建一个转换,保存为 order.ktr
五、创建数据库连接
双击DB连接,编辑好数据库的参数配置,如下图
配好各项参数后,点击测试可以验证是否配置正确
六、拖入表输入组件
将“核心对象”树的输入下找到“表输入”,拖入2个到设计区域,如下图
七、编辑2个输入表的属性
双击输入表组件,分别对2个输入表进行编辑,如下
八、拖入流查询
在左侧“核心对象”树找到 查询 > 流查询,拖入到设计区域,然后从前面拖入的user和orders2个表输入组件分别连一条线过来。
再双击流查询,设置属性,如下
底部的获取字段和获取查找字段可以帮助我们快速进行字段的配置。
九、配置product输入表
再拖入一个输入表到设计区域,设置属性
十、再拖入一个流查询
拖入一个流查询到设计区域,然后从前面拖入的userid流查询和product表输入组件分别连一条线过来。
再双击流查询,设置属性,如下
十一、文本输出
在左侧“核心对象”树找到 输出 > 文本文件输出,拖入到设计区域,然后从前面拖入流查询组件连一条线过来。
再双击文本文件输出,设置属性,如下
在文件页签可以指定文件名称及路径
十二、运行并查看结果
点击设计区域左上角的运行按钮(或按F9),弹出“执行转换”窗口,点击底部的启动按钮开始运行
设计区域的每个节点都显示了绿色的对勾,底部执行结果页都显示已完成。根据第十一步中设置的文件名称及路径找到输出的文件,并查看文件内容。
十三、作业
创建作业:菜单文件 > 新建 > 作业,然后在核心对象树将Start和转换拖入设计区域,将两个组件建立连续,并配置好转换属性为前面保存的order.ktr,如下
运行:点击设计区域左上角的运行按钮(或按F9),弹出“执行作业”窗口,点击底部的执行按钮开始运行
本文内容到此结束。
上一篇: ETL工具之——kettle使用简介
下一篇: HDFS是啥?HDFS原理 HDFS详解