7
Kettle 笔笔 1 笔笔笔笔笔笔笔 笔笔 笔笔 2014-03-14 Kettle 笔笔 1 笔笔笔笔笔笔笔 ETL 笔笔笔笔 笔笔笔笔笔笔笔笔笔笔笔笔笔笔笔笔 笔 笔 笔笔笔笔笔笔笔笔笔笔笔笔 、一, 、。? ETLETL(Extract-Transform-Load笔笔笔笔笔笔笔笔笔笔笔笔笔笔笔笔笔 ,、、 )笔笔 BI/ DW Business Intelligence 笔笔笔笔笔笔 笔笔笔笔 笔 笔笔笔笔笔笔笔笔笔笔笔笔笔 笔 笔笔笔 ), 一, 笔笔笔笔笔笔 ,。一,, ETL笔 笔 笔 。, ETL 笔 笔 60%80% ,。 ETL 笔 笔 笔 笔 笔 EXTRACT 笔笔笔 )、 ( TRANSFORM 笔笔笔 )、( CLEANSING )、 LOAD 笔笔笔笔笔 )。一,,,笔 笔 ,。 1

Kettle笔记 1 概述与项目编译

Embed Size (px)

Citation preview

Page 1: Kettle笔记 1 概述与项目编译

Kettle 笔记 1 概述与项目编译作者:张孟志日期:2014-03-14

Kettle 笔记 1 概述与项目编译

ETL

目前运行的应用系统是用户花费了很大精力和财力构建的、不可替代的系

统,尤其系统中的数据是非常之宝贵。但由于不同原始数据库中的数据的来源、

格式不一样,导致了系统实施、数据整合出现问题。怎么解决这个问题?

ETL。ETL(Extract-Transform-Load 的缩写,即数据抽取、转换、装载的过程)

作为 BI/DW(Business Intelligence)的核心和灵魂,能够按照统一的规则

集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,

是实施数据仓库的重要步骤。如果说数据仓库的模型设计是一座大厦的设计蓝1

张孟志, 03/14/14,
下面关于ETL的介绍摘抄自网上的一篇文章:《系统设计与架构笔记:ETL工具开发和设计的建议》作者 夏天的森林,火龙果软件 发布于 2013-11-04这篇文章简明易懂,值得学习借鉴。
Page 2: Kettle笔记 1 概述与项目编译

图,数据是砖瓦的话,那么 ETL 就是建设大厦的过程。在整个项目中最难部分

是用户需求分析和模型设计,而 ETL 规则设计和实施则是工作量最大的,约占

整个项目的 60%~80%,这是国内外从众多实践中得到的普遍共识。ETL 是 数 据 抽 取 ( EXTRACT ) 、 转 换 ( TRANSFORM ) 、 清 洗

(CLEANSING)、装载(LOAD)的过程。是构建数据仓库的重要一环,用户

从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模

型,将数据加载到数据仓库中去。我们所要做的 ETL 工具不是针对数据仓库,说白了就是要个安全稳定的数

据库数据导出导入工具。如图:

2

Page 3: Kettle笔记 1 概述与项目编译

ETL 工具共分为三大模块:ETL 核心模块、日志模块和 WEB 模块。一、ETL核心模块ETL 核心模块是整个 ETL 工具的核心,它主要的功能是根据事先定义好的

规则将源数据库的数据抽取到目标数据库。其主要工作流程是:数据抽取-->数据转换-->数据清洗-->数据加载ETL 工具里的配置数据库必须包含两个方面的数据:1.元数据:元数据主要是指源数据、目标数据库以及可以用于抽取的表、

字段等等信息,还有一些相关函数的定义等等。2.ETL 任务信息:ETL 任务在我们 ETL 工具里称作 job,job 是指一个将数

据从源数据库导出,并且按照一定规则导入到目标数据库的过程,ETL 任务信

息就是指一个 job 的相关配置信息。二、 日志模块良好的系统最重要的特征之一就是它的差错、容错以及能正确提供系统运

行信息的特性。所以日志模块是每个系统必不可少的部分,它设计的优劣直接

关系到系统后期维护的成本。ETL 工具里的日志模块,我个人认为应该包含如下的部分:

3

张孟志, 14年3月14日,
指这个作者:《系统设计与架构笔记:ETL工具开发和设计的建议》作者 夏天的森林,火龙果软件
Page 4: Kettle笔记 1 概述与项目编译

1.程序运行信息。这个主要是用 log4j 在代码里记录。2.ETL 任务(即 job)运行失败的日志信息。一切因为程序所抛出的异常

所引起的失败都要记录在 log4j 的运行日志里,如果能精确提炼出的常见异常,

最好能记录在数据库的日志表,便于快速查找错误信息(这个在有 WEB 系统

时候可以做)。3.审计日志。审计日志是带有一定业务需求的日志,这个是否要记录看实

际的需求。4.错误告警。一般而言 ETL 抽取数据的操作都是一件漫长的事情,ETL开

发人员不可能长时间坚守在系统旁边,所以当系统运行出错能在第一时间通知

到相关负责人是很有必要。Log4j 里有邮件通知的功能,用起来也不太难,可

以考虑在日志模块加入告警的功能。三、 WEB模块当我们开发好了 ETL 工具后我们需要一个入口,告诉我们设计的 ETL 工具

你具体做什么样的任务。WEB 模块的作用就是给用户操作的入口,我个人认为

WEB 模块包含以下功能:

4

张孟志, 14年3月14日,
指这个作者:《系统设计与架构笔记:ETL工具开发和设计的建议》作者 夏天的森林,火龙果软件
Page 5: Kettle笔记 1 概述与项目编译

1.元数据管理:主要是向配置数据库定义源数据库和目标数据库的相关信

息,例如:数据库的 url,用户名,密码,相关的表以及表里字段信息等等。这

些信息很重要,如果没有这些信息,整个 ETL 作业就是无源之水,根本无法进

行。2.ETL 任务的配置信息:即 job 的配置信息,这个就是定义我们 ETL 的抽

取过程,例如 ETL 需要抽取的源数据库是那个,抽取那张表那些字段,按照什

么规则转化数据,清洗数据,最终导入到那个目标数据库等等。3.查看日志信息:这个功能可选,查看日志信息主要是提高系统的友好程

度,便利系统运行信息的查看。4.用户管理:这个功能暂时可选,因为我们所开发的 ETL 工具主要是内部

使用,没有太大必要做复杂的权限管理,但是简单的用户信息管理做做应该还

是必要的。整个 WEB 模块也是可选的,如果人力和时间不够是没必要做一个 web 系

统,ETL 入口我们可以手动的配置任务信息。(假如真的做了 WEB 模块,对

ETL 后台的设计和开发要求也会更高)。

5

Page 6: Kettle笔记 1 概述与项目编译

ETL 工具

主流 ETL产品有 Ascential公司的 Datastage(Datastage 在 2005年

被 IBM收购)、Informatica公司的 Powercenter、 NCR Teradata公司的

ETL Automation(一套 ETL框架、主要关注“抽取”)。其他 ETL 工具有

OWB(Oracle Warehouse Builder) 、 ODI(Oracle Data

Integrator) 、 Informatic PowerCenter ( Informatica 公 司 ) 、

AICloudETL 、 DataStage ( Ascential 公 司 ) 、 Repository

Explorer 、 Beeload 、 Kettle 、 DataSpider 、 ETL Automation ( NCR

Teradata 公 司 ) 、 Data Integrator ( Business Objects 公 司 ) 、

DecisionStream(Cognos公司)。Kettle 是业界最有名的开源 ETL 工具。

Kettle

Kettle 也叫 PDI,在 2006年 Kettle 加入了开源的 BI 组织 Pentaho, 正

式命名为 PDI,英文全称为 Pentaho Data Integeration。Kettle 是“Kettle

6

Page 7: Kettle笔记 1 概述与项目编译

E.T.T.L. Envirnonment”只取首字母的缩写,这意味着它被设计用来帮助你实

现你的 ETL 需要:抽取、转换、装入和加载数据;翻译成中文名称应该叫水壶

名字的起源正如该项目的主程序员 MATT 在一个论坛里说的哪样:希望把各种

数据放到一个壶里然后以一种指定的格式流出。Kettle 的包括四大块:Chef——工作(job)设计工具 (GUI 方式),Kitchen

——工作(job)执行器 (命令行方式),Spoon——转换(transform)设计工具

(GUI 方式),Span——转换(trasform)执行器 (命令行方式)。

Kettle 编译

Kettle当属 ETL开源项目翘首。既然是开源,那就从源代码开始编译这个

项目。一个很自然的想法就是到 Kettle官网下载源码包和发行版(http://

community.pentaho.com/projects/data-integration/)。下 载 文 件 有 源 码 包 ( 源 工 程 项 目 ) : pdi-ce-src-4.4.0-stable-

r17588.zip;发行版:pdi-ce-4.4.0-stable.zip。解压源工程项目,此时 distrib文件夹为空。

7

张孟志, 14年3月14日,
Kettle笔记系列文档前半部分以应用为主,所以使用发行版。后半部分将分析源码才会使用到源码包。本文先用源码包编译一个Kettle项目给大家一个“商用”项目开发过程的概念。
张孟志, 14年3月14日,
以后在详细讲解。
Page 8: Kettle笔记 1 概述与项目编译

使用 eclipse 导入这个源工程项目。

Kettle 项目使用了 Ant 工具进行打包发布,因此,我们打开 build.xml文

件并执行“Ant Build”编译项目。

8

Page 9: Kettle笔记 1 概述与项目编译

编译完成后,Kettle 的版本就制作完成了。此时这个 distrib文件夹就是

刚制作的 Kettle发行版。

放着官网下载的发行版不用,自己用源码包编译一个发行版,是否真的值

得?其实使用/学习一个开源项目,自己编译是非常重要的。只会在 GUI界面点击鼠标,完成一项既定的工作并不是一件什么值得骄傲

9

Page 10: Kettle笔记 1 概述与项目编译

的事。源码展示了整个项目的细节,让读者可以深入理解项目的思想、设计、

实现。编译给了读者学习比点击鼠标更高的目标与途径。从功利的角度来说,也许读者要在一个项目/产品中使用开源项目作为辅助

(甚至是核心),最简单的方法不就是拿源工程项目过来改个 logo发行吗?

10