Kettle是一款国外开源的ETL工具,纯java编写,能够在Window、Linux、Unix上运行。 java
说白了就是,颇有必要去理解通常ETL工具必备的特性和功能,这样才更好的掌握Kettle的使用。我这里啊,先描述ETL工具的通用功能,再来描述做为ETL工具其中的一种(Kettle)是如何来提供这些功能的(图文详解)数据库
ETL工具的功能之一:链接编程
任何ETL工具都应该有能力链接到类型普遍的数据源和数据格式。对于最经常使用的关系型数据库系统,还要提供本地的链接方式(如对于Oracle的OCI),ETL应该能提供下面最基本的功能:架构
(1)链接到普通关系型数据库并获取数据,如常见的Orcal、MS SQL Server、IBM DB/二、Ingres、MySQL和PostgreSQL。还有不少不少并发
(2)从有分隔符和固定格式的ASCII文件中获取数据函数
(3)从XML文件中获取数据工具
(4)从流行的办公软件中获取数据,如Access数据库和Excel电子表格 post
(5)使用FTP、SFTP、SSH方式获取数据(最好不用脚本)测试
(6)还能从Web Services 或 RSS中获取数据。若是还须要一些ERP系统里的数据,如Oracle E-Business Suite、SAP/R三、PeopleSoft 或 JD/Edwards,ETL工具也应该提供到这些系统的链接。大数据
(7)还能提供Salesforce.com和SAP/R3的输入步骤,但不是套件内,须要额外安装。对于其余ERP和财务系统的数据抽取还须要其余解决方案。固然,最通用的方法就是要求这些系统导出文本格式的数据,将文本数据做为数据源。
ETL工具的功能之二:平台独立
一个ETL工具应该能在任何平台下甚至是不一样平台的组合上运行。一个32位的操做系统可能在开发的初始阶段运行很好,可是当数据量愈来愈大时,就须要一个更强大的操做系统。另外一种状况,开发通常是在Windows或 Mac机上运行的。而生产环境通常是Linux系统或集群,你的ETL解决方案应该能够无缝地在这些系统间切换。
ETL工具的功能之三:数据规模
通常ETL能经过下面的3种方式来处理大数据。
并发:ETL过程可以同时处理多个数据流,以便利用现代多核的硬件架构。
分区:ETL可以使用特定的分区模式,将数据分发到并发的数据流中。
集群:ETL过程可以分配在多台机器上联合完成。
Kettle是基于Java的解决方案,能够运行在任何安装了Java虚拟机的计算机上(包括Windows、Linux和Mac)。转换里的每一个步骤都是以并发的方式来执行,而且能够执行屡次,这样加快了处理速度。
Kettle在运行转换时,根据用户的设置,能够将数据以不一样的方式发送到多个数据流中(有两种几本发送方式:分发和复制)。分发相似与分发扑克牌,以轮流的方式将每行数据只发给一个数据流,复制是将每行数据发给全部数据流。
为了更精确控制数据,Kettle还使用了分区模式,经过分区能够将同一特征的数据发送到同一个数据流。这里的分区只是概念上相似于数据库的分区。
Kettle并无针对数据库分区有什么功能。
至于Kettle的扩展集群,这个很简单理解,很少赘述。
ETL工具的功能之四:设计灵活性
一个ETL工具应该留给开发人员足够的自由度来使用,而不能经过一种固定的方式来限制用户的创造力和设计的需求。ETL工具能够分为基于过程的和基于映射的。
基于映射的功能只在源数据和目的数据之间提供了一组固定的步骤,严重限制了设计工做的自由度。基于映射的工具通常易于使用,可快速上手,可是对于更复杂的任务,基于过程的工具才是组好的选择。
使用Kettle这样基于过程的工具,根据实际的数据和也许需求,能够建立自定义的步骤和转换。
ETL工具的功能之五:复用性
设计完的ETL转换应该能够被复用,这是很是重要的。复制和粘贴已经存在的转换步骤是最多见的一种复用,但这不是真正意义上的复用。
Kettle里有一个映射(子转换)步骤,能够完成转换的复用,该步骤能够将一个转换做为其余转换的子转换。另外转换还能够在多个做业里屡次使用,一样做业也能够为其余做业的子做业。
ETL工具的功能之六:扩展性
你们都知道,几乎全部的ETL工具都提供了脚本,以编程的方式来解决工具自己不能解决的问题。另外,还有少数几款ETL工具能够经过API或其余方式为工具增长组件。使用脚本语言写函数,函数能够被其余转换或脚本调用。
Kettle提供了上述的全部功能。Java脚本步骤能够用来开发Java脚本,把这个脚本保存为一个转换,再经过映射(子转换)步骤,又能够变为一个标准的能够复用的函数。实际上,并不限于脚本,每一个转换均可以经过这种映射(子转换)方式来复用,如同建立了一个组件。Kettle在设计上就是可扩展的,它提供了一个插件平台。这种插件架构容许第三方为Kettle平台开发插件。
你们要清楚,Kettle里的全部插件,即便是默认提供的组件,实际上也都是插件。内置的第三方插件和Pentaho插件的惟一区别就是技术支持。
假设你买了一个第三方插件(例如一个SugarCRM的链接),技术支持由第三方提供,而不是由Pentaho提供。
ETL工具的功能之七:数据转换
ETL项目很大一部分工做都是在作数据转换。在输入和输出之间,数据要通过校验、链接、分隔、合并、转置、排序、合并、克隆、排重、过滤、删除、替换或者其余操做。在不一样机构、项目和解决方案里,数据转换的需求都大不相同,因此很难说清一个ETL工具最少应该提供哪些转换功能。可是呢,经常使用的ETL工具(包括Kettle)都提供了下面一些最基本的整合功能:
缓慢变动维度
查询值
行列转换
条件分隔
排序、合并、链接
汇集
ETL工具的功能之八:测试和调试
这个很简单,很少赘述,后续博客有实战。
ETL工具的功能之九:血统分析和影响分析
任何ETL工具都应该有一个重要的功能:读取转换的元数据,它是提取由不一样转换构成的数据流的信息。
血统分析和影响分析是基于元数据的两个相关的特性。
血统是一种回溯性的机制,它能够查看到数据的来源。
影响分析是基于元数据的另外一种分析方法,能够分析源数据对随后的转换以及目标表的影响。
ETL工具的功能之十:日志和审计
数据仓库的目的就是要提供一个准确的信息源,所以数据仓库里的数据应该是可靠的、可信任的。为了保证这阵可靠性,同时保证能够记录下全部的数据转换操做,ETL工具应该提供日志和审计功能。
日志能够记录下在转换过程当中执行了哪些步骤,包括每一个步骤开始和结束时间戳。
审计能够追踪到对数据作的全部操做,包括读行数、转换行数、写行数。