近期两个月一直和kettle打交道,从開始的没听说过,到如今能够熟练运用,不得不说项目驱动下,学习东西是最快的。好了,尽管使用kettle应付项目的任务绰绰有余。可是还是想系统的学习一下,总结一下。比如job用的比較少,kettle的集群模式没有涉及到等等。
说起kettle,还是先说说ETL(Extract-Transform-load,即抽取,转换。载入)数据仓库技术。是用来处理将数据从来源(比如:单位基础server)经过抽取。转换。载入到达至目的端(正在做的项目)的过程。
也就是新的项目须要使用曾经项目数据库中的数据,ETL就是解决问题的。
ETL实现共同注意点:、空值处理:可捕获字段空值。进行载入或替换为其它含义数据,并可根据字段空值实现分流载入到不同目标库。
2、规范化数据格式:可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自己定义载入格式。
3、拆分数据:根据业务需求对字段可进行分解。例,主叫号 861082585313-8148,可进行区域码和电话号码分解。
4、验证数据正确性:可利用Lookup及拆分功能进行数据验证。比如,主叫号861082585313-8148。进行区域码和电话号码分解后,可利用Lookup返回主叫网关或交换机记载的主叫地区,进行数据验证。
5、数据替换:对于因业务因素。可实现无效数据、缺失数据的替换。
6、Lookup:查获丢失数据 Lookup实现子查询,并返回用其它手段获取的缺失字段,保证字段完整性。
7、建立ETL过程的主外键约束:对无依赖性的非法数据。可替换或导出到错误数据文件里。保证主键唯一记录的载入。
而,kettle则是当中的一种工具,其它还有:Informatica,Datastage,OWB,微软的DTS等等。
好。下边简单说说kettle。
kettle是一款国外开源(受欢迎)的ETL工具,纯Java编写(和Java开发非常好集成)。能够在Windows,Linux,Unix上运行(Linuxserver流行时代下,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还是非常easy的。
须要我们做的就是建好资源库,连接好数据库。建立转换。写好类中的每一个步骤,将转换连接起来组成任务(当然转换也能够独立运行)。
好,最后看一下什么时候适合使用kettle。
这样一个项目A,这个项目A须要实施到非常多家企业。而项目A须要用到每家企业的数据库基础数据。比如员工。组织结构,客户,供应商等等一些基础数据。这时候kettle就能够非常轻松的完毕任务。也就是说,我们的项目须要用到大量的数据库之间迁移数据。
好,kettle理论简单介绍,后边看kettle简单使用。最后附一张kettle工具的界面图: