一、Kettle简介:

       ETL是EXTRACT(抽取)、TRANSFORM(转换)、LOAD(加载)的简称,实现数据从多个异构数据源加载到数据库或其他目标地址,是数据仓库建设和维护中的重要一环也是工作量较大的一块。当前知道的ETL工具有informatica, datastage,kettle,ETL Automation,sqoop,SSIS等等

       Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

二、安装kettle

1、kettle是基于java开发的,所以需要java环境(需安装jdk)

2、kettle使用时,需要访问相关的关系型数据库,则需要下载对应的链接驱动。比如我们访问MySQL,则下载相应的驱动解压后放入kettle文件的lib目录下

        

etl开发工程师数据仓库 etl开发工具_时间间隔

 3、下载kettle并解压到自定义位置。kettle其实是以前的叫法,现在官方称为:PDI(Pentaho Data Integeration)。在windows中,双击目录中的Spoon.bat启动kettle.

        

etl开发工程师数据仓库 etl开发工具_数据库连接_02

三、 简单使用

etl开发工程师数据仓库 etl开发工具_数据_03

1、创建转换

       (1)文件----》新建-----》转换

       (2)新建转换后在左边的主对象树中建立DB连接用以连接数据库

etl开发工程师数据仓库 etl开发工具_数据库连接_04

 建立数据库连接的过程与其他数据库管理软件连接数据库类似。

注意:在数据库链接的过程中,可能会报某个数据库连接找不到的异常。那是因为你没有对应的数据库链接驱动,请下载对应驱动后,放入kettle的lib文件夹

2、简单的数据表插入(隐藏某些敏感词)

     (1)在左边的面板中选择“核心对象”,在核心对象里面选择“输入->表输入”,用鼠标拖动到右边面板

etl开发工程师数据仓库 etl开发工具_etl开发工程师数据仓库_05

 

       双击拖过来的表,可以编辑表输入。

  选择数据库连接和编辑sql语句,在这一步可以点击预览,查看自己是否连接正确。

etl开发工程师数据仓库 etl开发工具_数据库连接_06

        (2)核心对象里面的脚本,选择JavaScript脚本,将刚刚的表输入指向js脚本,双击编辑脚本

etl开发工程师数据仓库 etl开发工具_时间间隔_07

        (3)加入一个表输出, 双击编辑

etl开发工程师数据仓库 etl开发工具_时间间隔_08

      (4)到这里基本上,这个转换就要做完了,可以点击运行查看效果,看是否有误,这个要先保存了才能运行,可以随意保存到任何一个地方。此时就会生成.ktr 文件

etl开发工程师数据仓库 etl开发工具_时间间隔_09

      (5) 使用作业控制上面装换执行。

     使用作业可以定时或周期性的执行转换,新建一个作业。并从左边面板拖入start 和转换。

etl开发工程师数据仓库 etl开发工具_时间间隔_10

     双击start可以编辑,可以设置执行时间等等

etl开发工程师数据仓库 etl开发工具_数据_11

    点开装换,可以设置需要执行的转换任务,比如可以执行上面我们做的转换,XXX.ktr

etl开发工程师数据仓库 etl开发工具_数据库连接_12

       最后点击运行即可。

  到这里,一个简单的通过作业调度的kettle就算做完了。

 

 3、简单的表更新、插入(部分插入)

      (1)在左边的面板中选择“核心对象”,在核心对象里面选择“输入->表输入”,用鼠标拖动到右边面板

etl开发工程师数据仓库 etl开发工具_数据_13

      (2)在核心对象里面选择“输入->表输入”

etl开发工程师数据仓库 etl开发工具_etl开发工程师数据仓库_14

       (3)核心对象里面的脚本,选择JavaScript脚本,将刚刚的表输入指向js脚本,双击编辑脚本-------同上

       (4)在表输出中选择  插入/更新,双击编辑

etl开发工程师数据仓库 etl开发工具_数据库连接_15

etl开发工程师数据仓库 etl开发工具_数据库连接_16

         (5)启动即可

etl开发工程师数据仓库 etl开发工具_数据库连接_17

四、对作业调度的理解

1、不重复+不需要定时

etl开发工程师数据仓库 etl开发工具_数据库连接_18

      点击运行之后,任务会直接开始执行,执行完一次之后,即执行完毕          

2、不重复+时间间隔不为0 (2min)

etl开发工程师数据仓库 etl开发工具_数据库连接_19

点击运行之后,任务不会马上执行,而是等待2min(时间间隔)后在执行,且执行完一次后,任务执行完毕。

3、 不重复+时间间隔为0

etl开发工程师数据仓库 etl开发工具_etl开发工程师数据仓库_20

 点击运行之后,任务会马上执行(因为时间间隔为0),执行完一次,任务执行完毕

 4、重复+时间间隔不为0(2min)

etl开发工程师数据仓库 etl开发工具_时间间隔_21

 点击运行之后,任务不会马上执行,等待2min(时间间隔)之后,任务第一次执行,再等2min,任务第二次执行,以此类推。。。