Kettle体系结构与源码分析.docx

上传人:b****5 文档编号:2901597 上传时间:2022-11-16 格式:DOCX 页数:130 大小:2.99MB
下载 相关 举报
Kettle体系结构与源码分析.docx_第1页
第1页 / 共130页
Kettle体系结构与源码分析.docx_第2页
第2页 / 共130页
Kettle体系结构与源码分析.docx_第3页
第3页 / 共130页
Kettle体系结构与源码分析.docx_第4页
第4页 / 共130页
Kettle体系结构与源码分析.docx_第5页
第5页 / 共130页
点击查看更多>>
下载资源
资源描述

Kettle体系结构与源码分析.docx

《Kettle体系结构与源码分析.docx》由会员分享,可在线阅读,更多相关《Kettle体系结构与源码分析.docx(130页珍藏版)》请在冰豆网上搜索。

Kettle体系结构与源码分析.docx

Kettle体系结构与源码分析

Kettle程序分析

1.简介

ETL是数据抽取(Extract)、转换(Transform)、装载(Load)的过程。

  

Kettle是一款国外开源的ETL工具,有两种脚本文件transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

2.相关概念

Job:

一个作业,由不同逻辑功能的entry组件构成,数据从一个entry组件传递到另一个entry组件,并在entry组件中进行相应的处理。

Transformation:

完成针对数据的基础转换,即一个数据转换过程。

Entry:

实体,即job型组件。

用来完成特定功能应用,是job的组成单元、执行单元。

Step:

步骤,是Transformation的功能单元,用来完成整个转换过程的一个特定步骤。

Hop:

工作流或转换过程的流向指示,从一个组件指向另一个组件,在kettle源工程中有三种hop,无条件流向、判断为真时流向、判断为假时流向。

3.体系结构

kettle平台是整个系统的基础,包括元数据管理引擎、数据集成引擎、UI和插件管理模块。

(1)元数据管理引擎

元数据管理引擎管理ktr、kjb或者元数据库,插件通过该引擎获取基本信息,主要包括TransMeta、JobMeta和StepMeta三个类。

TransMeta类,定义了一个转换(对应一个.ktr文件),提供了保存和加载该文件的方法;

JobMeta类,同样对应于一个工作(对应一个.kjb文件),提供保存和加载方法;

StepMeta类,保存的是Step的一些公共信息的类,每个类的具体的元数据将保存在显示了StepMetaInterface的类里面。

(2)数据集成引擎

数据集成引擎包括Step引擎、Job引擎和数据库访问引擎三大部分,主要负责调用插件,并返回相应信息。

(3)UI

UI显示Spoon这个核心组件的界面,通过xul实现菜单栏、工具栏的定制化,显示插件界面接口元素,其中的TransGraph类和JobGraph类是用于显示转换和Job的类。

●TransGraph类

TransGraph类与显示

选中转换标签后,红框内的编辑区对象对应org.pentaho.di.ui.spoon.trans包中的TransGraph类。

●JobGraph类

JobGraph类与显示

选中Job标签后,红框内的编辑区对象对应org.pentaho.di.ui.spoon.job包中的JobGraph类。

(4)插件管理模块

Kettle是众多“可供插入的地方”(扩展点)和“可以插入的东西”(扩展)共同组成的集合体。

在我们的生活中,电源接线板就是一种“扩展点”,很多“扩展”(也就是电线插头)可以插在它上面。

插件管理引擎主要负责插件的注册,在Kettle中不管是以后的扩展还是系统集成的功能,本质上来讲都是插件,管理方式和运行机制是一致的。

系统集成的功能点也均实现了对应的扩展接口,只是在插接的说明上略有不同。

Kettle的扩展点包括step插件、jobentry插件、Database插件、Partioner插件、debugging插件。

4.功能模块

Kettle的主要包括四大功能模块:

Chef——工作(job)设计工具 (GUI方式);

Kitchen——工作(job)执行器 (命令行方式);

Spoon——转换(transform)设计工具 (GUI方式);

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

(1)Chef—工作(job)设计器

这是一个GUI工具,操作方式主要通过拖拽。

何谓工作?

多个作业项,按特定的工作流串联起来,形成一项工作。

正如:

我的工作是软件开发。

我的作业项是:

设计、编码、测试!

先设计,如果成功,则编码,否则继续设计,编码完成则开始设计,周而复始,作业完成。

1)Chef中的作业项

转换:

指定更细的转换任务,通过Spoon生成,通过Field来输入参数;

SQL:

sql语句执行;

FTP:

下载ftp文件;

邮件:

发送邮件;

检查表是否存在;

检查文件是否存在;

执行shell脚本:

如dos命令。

批处理:

(注意:

windows批处理不能有输出到控制台)。

Job包:

作为嵌套作业使用。

JavaScript执行:

如果有自已的Script引擎,可以很方便的替换成自定义Script,来扩充其功能;

SFTP:

安全的Ftp协议传输;

HTTP方式的上传/下载。

2)工作流

工作流是作业项的连接方式,分为三种:

无条件,成功,失败。

为了方便工作流使用,KETTLE提供了几个辅助结点单元(也可将其作为简单的作业项):

Start单元:

任务必须由此开始。

设计作业时,以此为起点。

OK单元:

可以编制做为中间任务单元,且进行脚本编制,用来控制流程。

ERROR单元:

用途同上。

DUMMY单元:

什么都不做,主要是用来支持多分支的情况。

3)存储方式

支持XML存储,或存储到指定数据库中。

一些默认的配置(如数据库存储位置……),在系统的用户目录下,单独建立了一个.Kettle目录,用来保存用户的这些设置。

4)LogView:

可查看执行日志。

(2)Kitchen—作业执行器

是一个作业执行引擎,用来执行作业。

这是一个命令行执行工具,参数如下:

   -rep     :

Repositoryname   任务包所在存储名

   -user    :

Repositoryusername   执行人

   -pass    :

Repositorypassword   执行人密码

   -job     :

Thenameofthejobtolaunch 任务包名称

   -dir     :

Thedirectory(don'tforgettheleading/or/)

   -file    :

Thefilename(JobXML)tolaunch

   -level   :

Thelogginglevel(Basic,Detailed,Debug,Rowlevel,Error,Nothing) 指定日志级别

   -log     :

Theloggingfiletowriteto 指定日志文件

   -listdir :

Listthedirectoriesintherepository 列出指定存储中的目录结构。

   -listjobs:

Listthejobsinthespecifieddirectory 列出指定目录下的所有任务

   -listrep :

Listthedefinedrepositories 列出所有的存储

   -norep   :

Don'tlogintotherepository 不写日志

(3)Spoon—转换过程设计器

   GUI工作,用来设计数据转换过程,创建的转换可以由Pan来执行,也可以被Chef所包含,作为作业中的一个作业项。

1)Input-Steps:

输入步骤

Textfileinput:

文本文件输入

可以支持多文件合并,有不少参数,基本一看参数名就能明白其意图。

Tableinput:

数据表输入

实际上是视图方式输入,因为输入的是sql语句。

当然,需要指定数据源(数据源的定制方式在后面讲一下)

Getsysteminfo:

取系统信息

就是取一些固定的系统环境值,如本月最后一天的时间,本机的IP地址之类。

GenerateRows:

生成多行。

这个需要匹配使用,主要用于生成多行的数据输入,比如配合Addsequence可以生成一个指定序号的数据列。

XBaseInput

ExcelInput

XMLInput

2)Output-Steps:

 输出步聚

Textfileoutput:

文本文件输出。

这个用来作测试蛮好,呵呵。

很方便的看到转换的输出。

Tableoutput:

输出到目的表。

Insert/Update:

目的表和输入数据行进行比较,然后有选择的执行增加,更新操作。

Update:

同上,只是不支持增加操作。

XMLOutput:

XML输出。

3)Look-up:

查找操作

●DataBase

●Stream

●Procedure

●Databasejoin

4)Transform 转换

●Selectvalues

对输入的行记录数据的字段进行更改 (更改数据类型,更改字段名或删除) 数据类型变更时,数据的转换有固定规则,可简单定制参数。

可用来进行数据表的改装。

●Filterrows

 对输入的行记录进行指定复杂条件的过滤。

用途可扩充sql语句现有的过滤功能。

但现有提供逻辑功能超出标准sql的不多。

●Sortrows

对指定的列以升序或降序排序,当排序的行数超过5000时需要临时表。

●Addsequence

为数据流增加一个序列,这个配合其它Step(Generaterows,rowsjoin),可以生成序列表,如日期维度表(年、月、日)。

●Dummy

不做任何处理,主要用来作为分支节点。

●JoinRows

对所有输入流做笛卡儿乘积。

●Aggregate

聚合,分组处理

●Groupby

分组,用途可扩充sql语句现有的分组,聚合函数。

但我想可能会有其它方式的sql语句能实现。

●JavaScriptvalue

使用mozilla的rhino作为脚本语言,并提供了很多函数,用户可以在脚本中使用这些函数。

●RowNormaliser

该步骤可以从透视表中还原数据到事实表,通过指定维度字段及其分类值,度量字段,最终还原出事实表数据。

●Uniquerows

去掉输入流中的重复行,在使用该节点前要先排序,否则只能删除连续的重复行。

 

●Calculator

提供了一组函数对列值进行运算,用该方式比用户自定义JAVASCRIPT脚本速度更快。

●MergeRows

用于比较两组输入数据,一般用于更新后的数据重新导入到数据仓库中。

●Addconstants:

增加常量值。

●Rowdenormaliser

同Normaliser过程相反。

●Rowflattener

表扁平化处理,指定需处理的字段和扃平化后的新字段,将其它字段做为组合Key进行扃平化处理。

除了上述基本节点类型外还定义了扩展节点类型 

SPLIT FIELDS:

按指定分隔符拆分字段;

EXECUTESQLSCRIPT:

执行SQL语句;

CUBEINPUT:

CUBE输入;

CUBEOUTPUT:

CUBE输出。

(4)Pan—转换的执行工具

命令行执行方式,可以执行由Spoon生成的转换任务。

同样,不支持调度。

参数与Kitchen类似。

(5)其它

●Connection

可以配置多个数据源,在Job或是Trans中使用,这意味着可以实现跨数据库的任务。

支持大多数市面上流行的数据库。

5.概念模型

Kettle的执行分为两个层次:

Job和Transformation。

两个层次的最主要区别在于数据传递和运行方式。

(1)Transformation(转换)

Transformation(转换)是由一系列被称之为step(步骤)的逻辑工作的网络。

转换本质上是数据流。

下图是一个转换的例子,这个转换从文本文件中读取数据,过滤,然后排序,最后将数据加载到数据库。

本质上,转换是一组图形化的数据转换配置的逻辑结构。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1