logo资料库

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

第1页 / 共144页
第2页 / 共144页
第3页 / 共144页
第4页 / 共144页
第5页 / 共144页
第6页 / 共144页
第7页 / 共144页
第8页 / 共144页
资料共144页,剩余部分请下载后查看
Kettle程序分析
1.简介
2.相关概念
3.体系结构
(1)元数据管理引擎
(2)数据集成引擎
(3)UI
(4)插件管理模块
4.功能模块
(1)Chef—工作(job)设计器
1)Chef中的作业项
2)工作流
3)存储方式
4)LogView:
(2)Kitchen—作业执行器
(3)Spoon—转换过程设计器
1)Input-Steps:输入步骤
2)Output-Steps: 输出步聚
3)Look-up:查找操作
4)Transform 转换
(4)Pan—转换的执行工具
(5)其它
5.概念模型
(1)Transformation(转换)
1)转换机制
2)Steps(步骤)
a) Step类图简介
b)步骤间交互通信类
c)行元数据
3)Hops(节点连接)
4)Trans配置及开启
5)Trans执行
a)执行准备(prepareExecution)
b)转换处理执行
(2)Jobs(工作)
1)机制
2)类图简介
3) Job配置及开启
4) Job执行步骤
6.kettle数据流图
(1)顶层数据流图
(2)第一层数据流图
(3)第二层数据流图
1)作业执行
2)转换执行
7.插件扩展机制
(1)插件的建立
1)系统集成插件定义
2)扩展插件定义
(2)插件的注册
(3)插件查找
(4)插件调用
(5)插件间通信
8.核心包(模块)、类和接口
(1)界面层
1)核心面板模块
a)Spoon类
b)JobGraph类
2)组件适配模块
3)测试结果展示模块
4)ui其他重要的类
a)SpoonDelegates类
b)SpoonJobDelegate类
5)ui中类的关系图
(2)逻辑层
1)Job模块
2)Trans模块
3)Src中其他重要的类和接口
a)EnvUtil类
b)PropsUI类
c)PluginLoader类
(3)底层(辅助层)
1)对文件的操作
2)多语言应用
3)异常处理
4)日志模块
5)元数据表示模块
6)core中的其他重要的类
9.目录结构
(1)总体目录结构
(2)core包
1)compatibility
2)core
(3)engine包
1)job包
2)trans包
3)kitchen包
4)pan包
5)logging包
(4)ui包
1)job包
2)trans包
3)spoon包
(5)test包
10.主要源码分析
(1)用户界面工作过程
(2)初始化过程
1)main函数
2)环境初始化
3)组件初始化:
4)用户历史信息初始化
5)界面初始化
6)主界面标题
7)初始化Spoon界面
8)初始化过程时序图
(3)Job、Transformation界面调用
1)Spoon类runFile( )
2)Spoon类executeFile( )
3)Spoon类getActiveTransformation( )、getActiveJob( )
4)Spoon类getActiveMeta( )
5)Spoon类Splash
6)选择执行时序图
7)Job调用后续步骤
8)Transformation调用后续步骤
9)Spoon类executeTransformation( )
10)SpoonTransformationDelegate类executeTransformation(
(4)Job
1)创建job
a)打开job(打开kjb)
b)新建job
2)保存job(保存kjb)
3)执行job
4)结果展示
5)执行示例说明
6)JobEntry
a)向job添加entry
b)编辑entry
7)相关类和接口
a)JobMeta
b)JobEntryCopy
c)JobEntryLoader
d)JobEntryInterface
e)JobEntryDialogInteface
f)JobEntryBase
g)JobEntrySpecial
h)JobEntryTableExit
i)JobEntryTrans
j)组件JobEntryXXX
k)JobEntryType枚举
l)Job类
m)Result
(5)Transformation
1)执行过程概述
2)Trans执行过程时序图
3)Trans代码解释
a)JobEntryTrans类execute( )
b)Trans类execute( )
c)Trans的prepareExecution()
d)Trans类startThreads( )
4)Step执行
a)启动
b)处理
c)元数据与数据关系。
5)相关类和接口
a)JobEntryTrans
b)TransGraph
c)TransMeta
d)StepMetaDataCombi
e)TransHopMeta
f)StepMeta
g)StepInterface
h)StepBase
i)StepDataInterface
j)RowSet
k)RowMetaAndData
l)StepInitThread类
m)RunThread类
(6)菜单加载
1)程序菜单栏
2)标签页上的菜单
3)右键菜单
11.Kettle资源文件及配置文件
(1)kettle.properties
(2)kettle-config.xml
(3)kettle-job.xml
(4)Message文件
(5).kjb文件格式
1)job标签
2)entries标签
3)hops标签
(6).ktr文件格式
1)info标签
2)order标签
3)step标签
(7)图标
(8)背景图片
(9)版本信息
(10)插件配置文件
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 类 选中转换标签后,红框内的编辑区对象对应 org.pentaho.di.ui.spoon.trans 包中的 TransGraph TransGraph 类与显示 类。  JobGraph 类
选中 Job 标签后,红框内的编辑区对象对应 org.pentaho.di.ui.spoon.job 包中的 JobGraph JobGraph 类与显示 类。 (4) 插件管理模块 Kettle 是众多“可供插入的地方”(扩展点)和“可以插入的东西”(扩展)共同组成的集合 体。在我们的生活中,电源接线板就是一种“扩展点”,很多“扩展”(也就是电线插头)可以插 在它上面。 插件管理引擎主要负责插件的注册,在 Kettle 中不管是以后的扩展还是系统集成的功能, 本质上来讲都是插件,管理方式和运行机制是一致的。系统集成的功能点也均实现了对应的扩 展接口,只是在插接的说明上略有不同。 Kettle 的扩展点包括 step 插件、job entry 插件、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—作业执行器 是一个作业执行引擎,用来执行作业。这是一个命令行执行工具,参数如下: : Repository name 任务包所在存储名 : Repository username 执行人 : Repository password 执行人密码 : The name of the job to launch 任务包名称 : The directory (don't forget the leading / or /) : The filename (Job XML) to launch : The logging level (Basic, Detailed, Debug, Rowlevel, Error, Nothing) 指定日志级别 : The logging file to write to 指定日志文件 -rep -user -pass -job -dir -file -level -log -listdir : List the directories in the repository 列出指定存储中的目录结构。 -listjobs : List the jobs in the specified directory 列出指定目录下的所有任务
-listrep : List the defined repositories 列出所有的存储 -norep : Don't log into the repository 不写日志 (3) Spoon—转换过程设计器 GUI 工作,用来设计数据转换过程,创建的转换可以由 Pan 来执行,也可以被 Chef 所 包含,作为作业中的一个作业项。 1) Input-Steps:输入步骤 Text file input:文本文件输入 可以支持多文件合并,有不少参数,基本一看参数名就能明白其意图。 Table input:数据表输入 实际上是视图方式输入,因为输入的是 sql 语句。当然,需要指定数据源(数据源的定制方 式在后面讲一下) Get system info:取系统信息 就是取一些固定的系统环境值,如本月最后一天的时间,本机的 IP 地址之类。 Generate Rows:生成多行。 这个需要匹配使用,主要用于生成多行的数据输入,比如配合 Add sequence 可以生成一 个指定序号的数据列。 XBase Input Excel Input XML Input 2) Output-Steps: 输出步聚 Text file output:文本文件输出。这个用来作测试蛮好,呵呵。很方便的看到转换的输出。 Table output:输出到目的表。 Insert/Update:目的表和输入数据行进行比较,然后有选择的执行增加,更新操作。 Update:同上,只是不支持增加操作。 XML Output:XML 输出。
3) Look-up:查找操作  Data Base  Stream  Procedure  Database join 4) Transform 转换  Select values 对输入的行记录数据的字段进行更改 (更改数据类型,更改字段名或删除) 数据类型变更 时,数据的转换有固定规则,可简单定制参数。可用来进行数据表的改装。  Filter rows 对输入的行记录进行指定复杂条件的过滤。用途可扩充 sql 语句现有的过滤功能。但现有 提供逻辑功能超出标准 sql 的不多。  Sort rows 对指定的列以升序或降序排序,当排序的行数超过 5000 时需要临时表。  Add sequence 为数据流增加一个序列,这个配合其它 Step(Generate rows, rows join),可以生成序列表, 如日期维度表(年、月、日)。  Dummy 不做任何处理,主要用来作为分支节点。  Join Rows 对所有输入流做笛卡儿乘积。  Aggregate 聚合,分组处理  Group by 分组,用途可扩充 sql 语句现有的分组,聚合函数。但我想可能会有其它方式的 sql 语句 能实现。  Java Script value 使用 mozilla 的 rhino 作为脚本语言,并提供了很多函数,用户可以在脚本中使用这些函数。
分享到:
收藏