kettle 使用说明
1.简介
ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可少。kettle是纯java编写,支持图形化的GUI设计界面,然后可以以工作流的形式流转,在做一些简单或复杂的数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有着比较稳定的表现,其中最主要的我们通过熟练的应用它,减少了非常多的研发工作量,提高了我们的工作效率。
kettle有两种脚本transformation(转换)和job(作业)
kettle有三个主要组件:Spoon、Kitchen、Pan
Spoon:是一个图形化的界面,可以让我们用图形化的方式开发转换和作业
Kitchen:使用命令行调用Job
Pan:使用命令行的形式调用transformation
Carte:是一个轻量级的Web容器
1.1 下载地址
国内镜像地址 :http://mirror.bit.edu.cn/pentaho/
1.2 常见错误
1.2.1 缺少mysql驱动程序包
下载下来的kettle在连接mysql时缺少mysql驱动程序,而无法连接数据库
**解决办法:**在maven中央仓库中下载mysql驱动包,maven中央仓库地址:https://mvnrepository.com/
搜索mysql ,本文下载的是mysql
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version>
</dependency>
2.简单使用说明
2.1 打开方式
windows 下双击Spoon.bat 打开图形化界面
2.2创建转换
在转换上右键—新建
界面分为主对象和核心对象,对于转换的相关组件在核心对象中。
2.2.1 创建DB连接
本例展示的是对于数据库的操作,故需要在DB中新建数据库连接。
点击测试,测试数据库是否连接正常,若正确,会提示正确连接到数据库,点击确认完成本次设置。
可以在选项中设置连接参数
2.2.2 转换输出输入设置
1.设置输入
核心对象 – 输入 – 表输入
双击表输入图标,进行表输入的相关设置
示例如下:
2.设置输出
同步到cs2数据库有两种方式,一种表输出,一种插入/更新
表输入:将记录同步到另一张表。
插入/更新:通过设置的比较字段,判断是插入还是更新表数据
本例中使用插入/更新做输出
如上图配置好插入更新的相关数据,配置好要更新的字段。到此简单的转换设置完成
2.2.3运行转换
在保存转换文件后,点击运行,通过日志可以查看执行结果。
2.3 创建作业
点击红色框内创建作业
本例中,将通过作业的形式,执行cs1库的test表同步到cs2库的test表。
2.3.1 开始按钮
任何一个作业都是以开始按钮开始
双击START图标,设置作业
2.3.2 转换
双击转换,设置转换
2.3.3 运行作业
保存作业后,运行红色框内的按钮,运行程序
到此最简单的数据表全量同步和更新说明完成
3.linux下运行
3.1 运行作业
./kitchen.sh -file=/opt/kettle/csjob.kjb -log=log.log
后台不间断运行
nohup bash ./kitchen.sh -file=/opt/kettle/csjob.kjb -log=log.log &
查看后台运行进程
ps -aux|grep kitchen.sh
ps aux | grep kitchen.sh| grep -v grep
结束进程
kill 进程id
3.2 运行转换
ile=/opt/kettle/csjob.kjb -log=log.log &
查看后台运行进程
ps -aux|grep kitchen.sh
ps aux | grep kitchen.sh| grep -v grep
结束进程
kill 进程id
3.2 运行转换
./pan.sh -file=/opt/kettle/csjob.ktr -log=log.log