kettle(1)概述

kettle(一)概述

           最近两个月一直和kettle打交道,从开始的没听说过,到现在能够熟练运用,不得不说项目驱动下,学习东西是最快的。好了,虽然使用kettle应付项目的任务绰绰有余,但是还是想系统的学习一下,总结一下。例如job用的比较少,kettle的集群模式没有涉及到等等。


          说起kettle,还是先说说ETLExtract-Transform-load,即抽取,转换,加载)数据仓库技术,是用来处理将数据从来源(例如:单位基础服务器)经过抽取,转换,加载到达至目的端(正在做的项目)的过程。也就是新的项目需要使用以前项目数据库中的数据,ETL就是解决这个问题的。

 

          ETL实现共同注意点:正确性,完整性,一致性,完备性,有效性,时效性,可获取性等,也就是说无论我们使用什么工具,来实现ETL技术时,达到这几个方面,才算是质量过关的,失去其中任何一方面都是不过关的。


         ETL实现主要是转换的实现,包含几个方面(来自百科):

1、空值处理:可捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库。

2、规范化数据格式:可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式。

3、拆分数据:依据业务需求对字段可进行分解。例,主叫号 861082585313-8148,可进行区域码和电话号码分解。

4、验证数据正确性:可利用Lookup及拆分功能进行数据验证。例如,主叫号861082585313-8148,进行区域码和电话号码分解后,可利用Lookup返回主叫网关或交换机记载的主叫地区,进行数据验证。

5、数据替换:对于因业务因素,可实现无效数据、缺失数据的替换。

6Lookup:查获丢失数据 Lookup实现子查询,并返回用其他手段获取的缺失字段,保证字段完整性。

7、建立ETL过程的主外键约束:对无依赖性的非法数据,可替换或导出到错误数据文件中,保证主键唯一记录的加载。

 

          而,kettle则是其中的一种工具,其它还有:InformaticaDatastage,OWB,微软的DTS等等。好,下边简单说说kettle。


     kettle是一款国外开源(受欢迎)的ETL工具,纯Java编写(Java开发很好集成),可以在Windows,Linux,Unix上运行(Linux服务器流行时代下,kettle更加受欢迎),数据抽取高效稳定(更更受欢迎了)。kettle中文名俗称“水壶”,开发目的是将各种数据放到一个壶中,然后经过各种处理加工,以特定的格式流出。


         kettle家族包括:Spoon,Pan,CHEF,Kitchen


    Spoon:是通过图形界面来设计ETL转换过程(Transformation(最常用)


         PAN:允许批量执行由Spoon设计的ETL转换(例如使用一个时间任务调度器)Pan是一个后台执行程序,没有图形界面。


         CHEF:允许创建任务(Job)。任务通过执行,每个转换,任务,脚本等,使其更加有利于完成更为复杂的任务。


         Kitchen:允许你批量使用由Chef设计的任务(例如使用一个时间调度器),也是后台执行程序。

 

         kettle转换的设计包括几个方面:资源库,数据库连接,作业(job),转换(trans),步骤(step)。形象的举一个例子:资源库相当于我们的一个Java项目 ,数据库连接相当于我们的Java项目中的连接数据库,Job相当于Java项目中的一条线,而Trans相当于Java的一个个类,Step则是类中的方法。所以从这个层面来看,其实Kettle还是非常简单的。需要我们做的就是建好资源库,连接好数据库,建立转换,写好类中的每个步骤,将转换连接起来组成任务(当然转换也可以独立执行)。

 

         好,最后看一下什么时候适合使用kettle。这样一个项目A,这个项目A需要实施到很多家企业,而项目A需要用到每家企业的数据库基础数据,例如员工,组织结构,客户,供应商等等一些基础数据,这时候kettle就可以很轻松的完成任务。也就是说,我们的项目需要用到大量的数据库之间迁移数据。


         好,kettle理论简介,后边看kettle简单使用。最后附一张kettle工具的界面图:

kettle(1)概述

版权声明:本文为博主原创文章,未经博主允许不得转载。