kettle介绍

1. kettle是什么

Kettle是“Kettle E.T.T.L. Envirnonment”只取首字母的缩写,这意味着它被设计用来帮助你实现你的 ETL需求:抽取、转换、加载数据;kettle翻译成中文名称应该叫水壶,名字的起源正如该项目的主程序员 MATT 在一个论坛里说的那样:希望把各种数据放到一个壶里然后以一种指定的格式流出。

Kettle是一款优秀的、开源的ETL软件,其基于Java实现,代码托管在Github上,相应地址为:https://github.com/pentaho/pentaho-kettle

2. kettle的安装

kettle依赖于JDK,必须先安装JDK,JDK版本为1.6或者以上。kettle安装包的获取方式有两种,一种是在自己使用源码进行编译(依赖Ant,必须安装Ant),另外一种是在官网上下载编译好的安装包。kettle最新的安装包可以在以下链接下载:
http://community.pentaho.com/projects/data-integration/

安装包的目录大致如下所示:

kettle-dir

3. kettle客户端

kettle核心提供了多个客户端,应用于ETL开发的不同阶段场景,如下图所示

kettle-dev-workflow

3.1 Spoon

Spoon,集成开发环境。提供用户图形界面化创建和编辑任务和转换定义。同时也能提供执行和调试任务和转换,并且还包括性能监控功能。在项目开发阶段通过使用该工具将流程设计为对应的转换和作业。

The integrated development environment. Offers a graphical user interface for creating and editing job and transformation definitions. Spoon can also be used to execute and debug jobs and transformations, and it also includes functionality for performance monitoring.

在Windows开发环境双击安装包下的Spoon.bat便可以打开Spoon图形化工具。

在Linux开发环境需要执行spoon.sh文件来打开Spoon,必须确保Linux安装并开启了图形化界面。

3.2 Kitchen

Kitchen,一个基于命令行执行的、用来执行kettle作业(注意不能用来执行转换)的kettle客户端工具,可被用来与操作系统层的脚本集成。通常结合cron,或windows任务管理器来定义周期性任务。对于小型规模的ETL生产环境,可以通过编写shell脚本或者批处理脚本并使用Kitchen工具来完成周期性的ETL流程调用。

A command line–driven job runner, which can be used to integrate Kettle with OS-level scripts. It is typically used to schedule jobs with a scheduler such as cron, at, or the Windows Task Scheduler.

3.3 Pan

Pan跟Kitchen一样是命令行方式执行器,不过这个仅仅能执行转换定义,而不是作业。

A command line–driven program just like Kitchen, but it is used for executing transformations instead of jobs.

3.4 Carte

Carte是一个运行在后台的轻量级web应用(基于Jetty的HTTP web服务应用),它通过监听请求来执行kettle转换或者作业。Carte还可用于部署kettle集群并执行集群上的转换或作业。通常在生产环境下应该考虑使用Carte来执行Kettle转换或作业。

A light-weight server (based on the Jetty HTTP server) that runs in the background and listens for requests to run a job. Carte is used to distribute and coordinate job execution across a collection of computers forming a Kettle cluster.

4. kettle构建块

4.1 Transformation

Transformation(转换)是实现ETL功能的核心,一个转换是由多个Step(步骤)用Hop连接起来构成的一个完整的ETL流程。转换里的步骤的执行是并行的,一个步骤不是等到前一个步骤执行完后才开始执行的。

4.1.1 Step

Step(步骤)是Transformation的核心组成,Step与Step之间通过Hop连接起来,数据(Row Data)从Hop流向Step再从Step通过Hop流出去进入下一个Step。

4.1.2 Hop

Hop(链路)表示Step与Step之间的一条通道,在Step之间进行传递结果或者数据集。

4.1.3 RowData

在Kettle的步骤里,数据是以行的形式存在并且在步骤与步骤之间传递的。一行数据包含多个字段,字段类型包括:String、Number、Integer、BigNumber、Date、Boolean、Binary。

4.2 Job

Job(作业)是Kettle实现业务逻辑的基本单元,一个作业可以由多个Transformation(转换)组成,以完成复杂的逻辑需求。作业里的“步骤”(有可能是子作业,有可能是转换)执行是串行的,一个“步骤”的执行必须等到前一个步骤执行结束,返回了结果才能开始执行。这一点与转换的步骤是不一样的,注意区分。

4.2.1 Job Entry

一个Job是由一个或者多个Job Entry通过Job Hop按照一定的次序连接起来构成的,这里的Job Entry相当于转换Transformation里的Step。

4.2.2 Job Hop

与Step Hop类似,将JobEntry和JobEntry链接起来构成一个完整的Job,主要区别在于,Job Hop可以设置进入下一个JobEntry的先决条件,决策条件有:无条件的、当结果为真的时候进入下一步、当结果为假的时候进入下一步。

4.2.3 Job Entry Results

Job Entry执行完后一般会产生Job Entry Result,一个Job Entry Result主要包括以下内容:

  • A list of result rows:包含Job Entry产生的结果集
  • A list of file names:包含Job Entry涉及读文件的文件名集合
  • The number of lines read, writeten, input, output, deleted, rejected and in error by a transformation:包含一个转换中读、写、输入、输出、删除、拒绝和出错的行数

4.3 Database Connections

Kettle支持多种关系型数据库连接,连接方式有Native(JDBC方式),ODBC和JNDI方式,通常采用JDBC来进行连接。

如果在Spoon中新建连接时提示没有找到JDBC Driver,那是因为kettle安装包对应目录下没有放置对应数据库的jdbc驱动包,自行添加并重新启动Spoon即可。
Kettle4放置jdbc的目录为${KETTLE_DIR}/libext/JDBC/ ,Kettle5 and Kettle6放置jdbc的目录为${KETTLE_DIR}/lib/,其中${KETTLE_DIR}表示kettle的解压目录。

5. kettle常用组件

5.1 转换组件

// TODO 这里列举一些常用的转换组件

表输入
表输出
文本文件输入
文本文件输出

5.2 作业组件

// TODO 这里列举一些常用的作业组件

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值