前言
ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可少,这里我要学习的ETL工具是Kettle!本文使用工具及版本:
- kettle:pdi-ce-9.1.0.0-324
- jdk:1.8
- mysql:msyql8
- Linux:centos7.2
- ftp工具:xftp5
一、kettle是什么?
- Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。
- Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
- Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
- Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
- Kettle(现在已经更名为PDI,Pentaho Data Integration-Pentaho数据集成)。
二、使用步骤
1.下载kettle及MySQL依赖
kettle下载地址:https://sourceforge.net/projects/pentaho/files/
MySQL依赖下载地址:https://dev.mysql.com/downloads/connector/j/
以上文件附百度网盘地址
链接:https://pan.baidu.com/s/1bD-hkilrcYfaUwo1zkIXTg
提取码:zjgl
2.解压缩下载的pdi压缩包
kettle是绿色版无需安装,可直接使用。在根目录下找到Spoon.bat,双击即可运行kettle。
将mysql的依赖放入根目录下的lib目录中
3.创建一个简单的转换
-
在主对象树中,双击转换
-
在核心对象,点击输入,双击输入中的表输入
-
双击右侧的表输入,新建要输入的数据库连接
-
在核心对象,输出中,双击插入/更新
-
双击右侧插入/更新,新建要输出的数据库连接
-
点击浏览,选择要输出的表,分别获取字段并编辑字段
-
运行转换,直接点击启动,运行前需要先保存转换
-
最后转换成功
4.Linux安装kettle
- 直接将windows本地下载的pdi压缩包使用ftp工具上传到Linux中。
- 进入文件所在目录,使用 unzip pdi-ce-9.1.0.0-324.zip 命令将文件解压缩。
- 将windows上编辑好的转换文件(以.ktr结尾的文件)上传到Linux的pdi目录下。我这里把 test_20210811.ktr 文件上传到了 /kettle/data-integration/files/ 目录下。
- 测试是否安装成功,在pdi根目录下,输入 ./pan.sh,显示如下信息表示安装成功。
- 测试转换是否能正常执行,在pdi根目录下输入
./pan.sh -file=/kettle/data-integration/files/test_20210811.ktr
如下图显示则表示成功执行。
6. 在pdi目录下输入 vi test.sh 命令,新建一个test.sh文件,在test.sh内输入如下内容:
export JAVA_HOME=/jdk/jdk1.8.0_92
export JRE_HOME=/jdk/jdk1.8.0_92/jre
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
/kettle/data-integration/pan.sh -file=/kettle/data-integration/files/test_20210811.ktr > /kettle/data-integration/files/$(date "+%Y%m%d%H%M%S").log
其中kettle的目录和jdk的目录替换成自己的,并保存。
7. 修改test.sh权限,给他执行权限:chmod a+x *.sh
8. 编辑定时任务:crontab -e
56 10 * * * /kettle/data-integration/jobs/test.sh
cron表达式从左到右依次表示分钟、小时、日、月、周。
我这里设置的意思时每天的10:56执行test.sh,test.sh目录设置成自己的目录。
9. 保存并退出后,重启crond.service服务:systemctl restart crond.service
10. 到数据库验证并查看log文件,验证是否成功。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了kettle的使用,而kettle还有更多的用法需要去进一步学习。