定义:kettle是免费开源的、可视化的、功能强大的ETL(ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。)工具.
transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
区别: 作业时步骤流,转换是数据流。 作业的每一个步骤,必须等到前面的步骤都跑完了,后面的步骤才会执行;而转换会一次性把所有控件全部启动(一个控件对应启动一个线程),然后数据流会从第一个控件开始,一条记录,一条记录地流向最后的控件。
工具 | 作用 |
---|---|
勺子 spoon.bat/spoon.sh | 允许你通过图形界面来设计ETL转换过程(Transformation) |
锅 pan.bat/pan.sh | Pan是一个后台执行的程序,没有图形界面,类似于时间调度器,命令行调用trans |
carte | 一个轻量级web容器,用于建立专用远程的etl server |
厨房 KITCHEN | 批量使用由Chef设计的任务,命令行调用job |
下载,过程省略,这里使用8.2版本,没使用当前最新的9.1 ; 下载后解压,安装jdk后双击spoon.bat即可。
测试(从stu1 同步数据到stu2,一种方式覆盖stu2,一种增量更新stu2)
MariaDB [test]> use test
Database changed
MariaDB [test]> create table stu1(id int,name varchar(20),age int);
Query OK, 0 rows affected (0.41 sec)
MariaDB [test]> create table stu2(id int,name varchar(20));
Query OK, 0 rows affected (0.02 sec)
MariaDB [test]> insert into stu1 values(1,'aa',22),(2,'vbb',33),(3,'aas',44);
Query OK, 3 rows affected (0.24 sec)
Records: 3 Duplicates: 0 Warnings: 0
MariaDB [test]> insert into stu2 values(1,'laowang');
Query OK, 1 row affected (0.00 sec)
下载mariadb 的jdbc包放到kettle的lib目录下面:https://downloads.mariadb.com/Connectors/java/connector-java-2.7.2/mariadb-java-client-2.7.2.jar 新建转换:在转换上右键,然后点输入
将表输入 拖到右边(或者双击)
配置输出: 点击 输出 ,拖动插入更新按钮, 按住shift 点击 表输入 拉向插入更新,会建立数据流向(保证中间线是实线,虚线通过单击变为实线)
双击插入/更新 按钮
点击左上角的保存按钮,保存job。然后点击 运行
查看mariadb数据
MariaDB [test]> select * from stu2;
+------+---------+
| id | name |
+------+---------+
| 1 | laowang |
| 2 | vbb |
| 3 | aas |
+------+---------+
3 rows in set (0.00 sec)
改为Y再次运行,然后查询数据库
MariaDB [test]> select * from stu2;
+------+------+
| id | name |
+------+------+
| 1 | aa |
| 2 | vbb |
| 3 | aas |
+------+------+
3 rows in set (0.00 sec)
在左侧选作右键新建作业job, 依次拖动start,转换,sql,发送邮件到右面窗口,并按住shift连线,转换按钮双击选择上面创建的转换,sql
在stu1中插入一条数据
MariaDB [test]> insert into stu1 values(4,'ww',43);
Query OK, 1 row affected (0.01 sec)
配置邮件发送
执行job,检查stu2数据和邮件发送情况