kettle7.1的基本使用总结

概念:

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压缩(真/假)? 默认值为“假”。

更多参数配置可以见:mysql配置


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

根据电脑内存修改spoon.bat

         PENTAHO_DI_JAVA_OPTIONS="-Xms8192m""-Xmx8192m" "-XX:MaxPermSize=4096m"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • //[kettle官方首页]Data Integration | Pentaho Communityhttp://...
    葡萄喃喃呓语阅读 5,139评论 0 21
  • Kettle 1.Kettle的介绍: Kettle是一款国外开源...
    有你就行阅读 753评论 0 1
  • 背景 最近因公司项目原因,接触到了Kettle这样一款ETL工具。计划在这段学习与使用的过程中,将自己的心得体会,...
    熊颀阅读 26,578评论 11 41
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,016评论 2 89
  • 数据整合是吧在不同数据源的数据收集、整理、清洗、转换(有点像ETL)后,加载到一个新的数据源,为数据使用者提供统一...
    开心跳蚤阅读 2,064评论 0 5