ETL工具Kettle的基本使用

时间:2022-03-03 09:51:30

0.ETL简介

ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。

ETL包含了三方面:
抽取:将数据从各种原始的业务系统中读取出来,这是所有工作的前提。
转换:按照预先设计好的规则将抽取得数据进行转换,使本来异构的数据格式能统一起来。
装载:将转换完的数据按计划增量或全部导入到数据仓库中。

0.1.ETL与Kettle的关系

Kettle 是一种可以用来做ETL操作的开源工具

还有一些其他的ETL工具:

  • DataStage:这是IBM为其配套的DB2开发的ETL工具,也可以用于其它数据库数据的集成 Informatica
  • PowerCenter:可用于访问和集成几乎任何业务系统、任何格式的数据,它可以按任意速度在企业内交付数据,具有高性能、高可扩展性、高可用性的特点

1.Kettle简介

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

Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。

Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。

1.1.Kettle与Pentaho、PDI的关系

PDI 的全称是Pentaho Data Integeration,Kettle 是 PDI 以前的名称

Kettle 的主作者是 Matt ,他在 2003 年就开始了这个项目,在 PDI 的代码里就可以看到最早的日期大概在2003年4月。 从版本2.2开始, Kettle 项目进入了开源领域,并遵守 LGPL 协议。

在 2006年 Kettle 加入了开源的 BI 组织 Pentaho, 正式命名为PDI, 加入Pentaho 后Kettle 的发展越来越快了,并有越来越多的人开始关注它了。

2. Kettle中的基本概念

Kettle中有两种脚本文件,transformationjob

  • transformation完成针对数据的基础转换
  • job则完成整个工作流的控制

3. Kettle的安装

  • 配置好jdk环境变量
  • 下载kettle后解压到任意路径即可使用
  • 启动:
    transformation/job图形化设计工具的启动:
    Windows下双击spoon.bat启动
    Linux下运行spoon.sh脚本启动

3.1.修改启动JVM参数

如果运行时发现内存溢出,可以参照如下方法修改JVM启动参数:
Windows下修改Spoon.bat文件
Linux下修改spoon.sh文件:
找到下面一行内容

PENTAHO_DI_JAVA_OPTIONS="-Xmx512m -XX:MaxPermSize=256m"

将Xmx512m中的512改为一个更大的数字。

4. Kettle模块介绍

Kettle包括三大模块:

  • Spoon——转换/工作(transform/job)设计工具 (GUI方式)
  • Kitchen——工作(job)执行器 (命令行方式)
  • Pan——转换(trasform)执行器 (命令行方式)
    ETL工具Kettle的基本使用

5. Kettle组件介绍

  • 创建一个新的transformation,kettle默认transformation文件保存后后缀名为ktr
  • 创建一个新的job,kettle默认job文件保存后后缀名为kjb

5.1. Kettle组件介绍——Transformation组件树介绍

Transformation中的节点介绍如下:

  • Main Tree:菜单列出的是一个transformation中基本的属性,可以通过各个节点来查看。
  • DB连接:显示当前transformation中的数据库连接,每一个transformation的数据库连接都需要单独配置。
  • Steps:一个transformation中应用到的环节列表
  • Hops:一个transformation中应用到的节点连接列表
    核心对象菜单列出的是transformation中可以调用的环节列表,可以通过鼠标拖动的方式对环节进行添加:
  • Input:输入环节
  • Output:输出环节
  • Lookup:查询环节
  • Transform:转化环节
  • Joins:连接环节
  • Scripting:脚本环节

5.2. Kettle组件介绍——Job组件树介绍

Job中的节点介绍如下:

  • Main Tree:列出的是一个Job中基本的属性,可以通过各个节点来查看。
    DB连接:显示当前Job中的数据库连接,每一个Job的数据库连接都需要单独配置。
  • Job entries/作业项目:一个Job中引用的环节列表
    核心对象菜单列出的是Job中可以调用的环节列表,可以通过鼠标拖动的方式对环节进行添加。
    每一个环节可以通过鼠标拖动来将环节添加到主窗口中。
    并可通过shift+鼠标拖动,实现环节之间的连接。

6. Kettle使用举例

  • 1.将数据库数据导入到文本文件中->db2text.ktr
  • 2.将文本文件中的数据导入到数据库中->text2db.ktr
  • 3.将数据从一个数据库表导入到另一个数据库表中 table2Table.ktr/table2Table.kjb
  • 4.从ftp下载文件到本地,再将该文件上传到hdfs ->ftp2Local2Hdfs.kjb
  • 5.将本地文件上传到ftp->local2Ftp.kjb
  • 简单案例的github地址:https://github.com/ychenchen/kettle.git

7. Kettle使用举例——串行/并行

  • 串行:一个节点操作失败,后面的节点将不再继续执行
  • 并行:从一个节点分开后多分支执行,每条分支的执行结果不影响其他分支,分支合并后的节点也会多次执行,即所有执行成功的分支都会执行合并后的节点

  • 在spoon中演示并查看并行执行结果->parallel.kjb

8. Pan命令和kitchen命令演示

  • 演示使用Pan命令执行transformation
pan.sh -file db2text.ktr
  • 演示使用kitchen命令执行job
kitchen.sh -file local2Ftp.kjb
  • 查看日志文件

    将日志文件重定向到文本文件中

pan.sh -file db2text.ktr >log.log
kitchen.sh -file local2Ftp.kjb >log.log