kettle简介

Kettle是一款国外开源的ETL工具,纯java编写,可以在Windows、Linux、Unix上运行,数据抽取高效稳定。
下载地址为https://community.hitachivant...
Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

基本概念

Kettle家族目前包括4个产品:Spoon、Pan、CHEF、Kitchen。
SPOON 允许你通过图形界面来设计ETL过程。启动过程为进入data-integration目录,双击spoon.bat

PAN 允许你批量运行由Spoon设计的ETL转换 。Pan是一个后台执行的程序,没有图形界面。

CHEF 允许你创建任务(Job)。

KITCHEN 允许你批量使用由Chef设计的任务。KITCHEN也是一个后台运行的程序。

作业(job)

负责将[转换]组织在一起进而完成某一块工作,通常我们需要把一个大的任务分解成几个逻辑上隔离的作业,当这几个作业都完成了,也就说明这项任务完成了。

转换(Transformation)

定义对数据操作的容器,数据操作就是数据从输入到输出的一个过程,可以理解为比作业粒度更小一级的容器,我们将任务分解成作业,然后需要将作业分解成一个或多个转换,每个转换只完成一部分工作。

支持的数据操作类型

clipboard.png

kettle简单使用

eg:编写一个简单的ETL过程,实现从mysql一张表同步数据到另一张表

  • 启动图形化界面:解压data-integration.zip,进入data-integration目录,双击spoon.bat
  • 新建一个转换:点击左上角文件,选择新建->转换

clipboard.png

  • 左侧选择输入->表输入,双击表输入,在主界面上就会有表输入显示框

clipboard.png

  • 双击主界面的表输入,会弹出表的配置框

clipboard.png

  • 弹出表的配置框后,点击右上角新建,弹出需要输入数据库类型和数据库各项信息的配置框,选择你的源数据库类型,和信息后点击测

clipboard.png

  • 选择你的源数据库类型,填入信息后点击测试,出现类似下图提示则为连接成功,若果出现一串异常信息则为失败。

clipboard.png
1、信息填错
2、账号密码没有权限
3、没有数据库的驱动包,如果没有驱动包,需要去网上找到对应数据库版本的驱动jar包放到data-integrationlib目录下,然后重启kettle

  • 测试通过,可以连接上数据库后,点击右下角确认,就会返回表输入的配置框,并且在数据库连接上会出现刚才你填写的数据库,然后点击获取SQL查询语句进行选择某个表,也可以在SQL栏自己写sql语句,写完之后验证sql是否正确,可以点击下方的预览键查看。至此,源数据选择完毕。

clipboard.png

  • 源数据信息填写完毕后,需要填写目的信息,最左侧步骤栏点击输出,双击表输出

clipboard.png

  • 弹出表输出的配置后,点击新建,填入目的表的信息,在目标表栏目中选择需要将源数据同步到哪张表

clipboard.png

  • 配置完源信息和目的信息后,将表输入和表输出连接起来,连接方式是鼠标先点击一下表输入,然后按住shift键,鼠标左键点击表输入往表输出方向拖动,就能出现连接线

clipboard.png

  • 连接线连接后,就可以运行了,点击运行键,运行这个转换,运行前需要保存,将这个转换命名为simple_table2table.ktr

clipboard.png

  • 运行时,如果步骤上方出现打钩图案表示该步骤执行完成,下方可以看到具体的日志信息,和输入输出的数据量,一个简单的使用就完成了。

clipboard.png

clipboard.png

上图中可以点击Preview data查看数据转换过程

如何将上述转换(simple_table2table)放到linux下执行?

  1. 首先将data-integration.zip放在服务器某个目录下,
  2. 然后解压data-integration.zip,进入data-integration目录,
  3. 执行chmod +x *.sh,将所有脚本赋予可执行权限。
  4. 然后将simple_table2table放到服务器某个目录下执行

    ./pan.sh -file=xx/simple_table2table.ktr -debug=debug -log=xxx/xxxx.log

  5. 如果运行的是作业则用kitchen脚本执行

    ./kitchen.sh -file=xx/xxx.kjb –log=x/xxxx.log

  6. kettle任务可以使用crontab实现定时调度

已注销
1 声望0 粉丝

引用和评论

0 条评论