美文网首页
kettle7.1的基本使用总结

kettle7.1的基本使用总结

作者: 越走越远的风 | 来源:发表于2018-12-25 14:56 被阅读27次

    概念:

    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"

    相关文章

      网友评论

          本文标题:kettle7.1的基本使用总结

          本文链接:https://www.haomeiwen.com/subject/dprflqtx.html