代码编织梦想

简介

Kettle是一款国外开源的ETL工具,纯java编写,可以在Windows、Linux、Unix上运行,数据抽取高效稳定。

Kettle家族目前包括4个产品:Spoon、Pan、CHEF、Kitchen。

SPOON 允许你通过图形界面来设计ETL转换过程(Transformation)。

PAN 允许你批量运行由Spoon设计的ETL转换 (例如使用一个时间调度器)。Pan是一个后台执行的程序,没有图形界面。

CHEF 允许你创建任务(Job)。 任务通过允许每个转换,任务,脚本等等,更有利于自动化更新数据仓库的复杂工作。任务通过允许每个转换,任务,脚本等等。任务将会被检查,看看是否正确地运行了。

KITCHEN 允许你批量使用由Chef设计的任务 (例如使用一个时间调度器)。KITCHEN也是一个后台运行的程序。

我们主要讲解spoon。

欢迎关注个人公众号【好好学技术】交流学习

一、配置仓库管理

点击右上角配置数据存储位置

点击Repository Manager…

数据库存储则是将所创建的文件保存到数据库,这样可以保证数据的安全性。(长时间的传输可能出现数据库连接超时)。

文件存储则是将文件保存到本地磁盘,两种可视情况而定。

二、转换的使用

配置BD连接,必须先把数据库连接的jar包放在kettle安装目录下的lib包。如:mysql-connector-java-5.1.38.jar

如下:配置了一个oracle和一个mysql的数据库

新建一个转换: 文件 —> 新建 —> 转换

简单的数据转换最常用的就是CSV文件输入和表输入两种了,其他的可以在作业中用到。

输出有以上几种,下面我们示范一个从数据库读取数据,输出一个csv文件。

写完后点击预览查看是否正确

下面看文本文件输出

点击执行,生成csv文本

三、作业

比如说我们要同时同步五张表的数据则可以新建一个作业,多线程去同步五张表的数据

四、定时执行任务

我们将作业保存在数据库中,windows下一般用任务调度来执行,linux可以用crotable实现

新建一个bat文件

然后将这个bat文件添加到windows定时任务中就可以了

五、java代码

kettle也支持java代码及js脚本等

假设有表person,有字段id,name,code,若code为空,则取name,若不为空加上999,然后更新原表数据。

表输入如下:

Java代码如下:

更新如下:

执行成功后查看数据库数据:

六、性能优化

Oracle:

defaultRowPrefetch = 20000 (可以根据内存情况定)

    预取条数默认值,oracle默认为10,可以增加该值来减少数据库请求以提高查询效率

Mysql:

defaultFetchSize:设置一次读取多少条数据,不设置读大表可能会出现OOM问题

rewriteBatchedStatements:批量插入,可以提高插入数据的性能

useServerPrepStmts:如果服务器支持,是否使用服务器端预处理语句? 默认值为“真”(如果数据类型不一 致,可能会出现丢失精度问题)

useCursorFetch:使用FetchSize必须启用

useCompression:与服务器进行通信时采用zlib压缩(真/假)? 默认值为“假”。

提交数量可以根据内存情况尽量给大,最大5W条。

根据电脑内存修改spoon.bat

     PENTAHO_DI_JAVA_OPTIONS="-Xms8192m""-Xmx8192m" "-XX:MaxPermSize=4096m"
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_14946371/article/details/130869235