用ETL工具kettle实现的一个需求
2010-12-29 09:36
197 查看
通过最近一段时间的学习,对kettle有了大致的了解,也通过该工具实现需要的需求。
我介绍下我的需求:
数据流程:源(外购数据,网页抓取,人工采集)
源和目的端的表结构完全不一样,这里就包含了三种情况:一对一、一对多、多对一。其中一对多包含两种情况:一个表的一条数据到一个表的多条数据,即横转纵。这个插件在kettle中有。第二种是一个表的一条数据到多个表的多条数据,这种情况就相当于是多个一对一的情况。多对一就是反过来了。除了这些其实还有一个特殊的需求,就是表中一个字段中会存在一个公式,比如A+B,这里的A和B都需要替换成其他表中对应字段的值。这是一种特殊的需求,需要开发自己的插件来实现。
设计方案判断是否可行标准。
1、
2、对每行数据可以进行日志记录。
3、对每次处理的数据条数可以进行控制。
设计方案:
对于源表的每条变化都要进行记录,在源表上建立触发器,对增删改进行监控。所以就需要一张变动表 来记录所有的记录。这里还有一种方式,就是通过时间戳的方式,就不需要记录每一条记录的时间了。
对于源表到目的表的对应情况,以及需要用什么样的转换过程,需要一张配置表。
由于转换对应关系是通过存储过程来实现的,所以就需要一个目的临时表,而不是直接进入目的表中。目的临时表比目的表多两个字段。用来表示源和目的的关系。
这样就设计完了。至于实现就见下:
实现方式:
对每一条数据进行提取转换装载后再进行下一条的整个流程,可想而知,本来kettle就是并行的,结果现在就是单行了,效率低的吓人。在目的表中为10W条数据的时候,速度在每分钟150条左右。这根本不符合需求,虽然需求只需要每分钟500条就够了。第一种需求是为了对每一条数据进行详细记录是否成功,如果失败可以及时的知道,并且处理。所以进行一下的更改。将提取转换 和装载分开进行,而且是批量进行。对于日志就在存储过程中进行记录。(计划开发个插件进行记录。)。
图就发不了了,如果大家有什么疑问给我留言。我看到后一定给各位回复。。。。。。
我介绍下我的需求:
数据流程:源(外购数据,网页抓取,人工采集)
源和目的端的表结构完全不一样,这里就包含了三种情况:一对一、一对多、多对一。其中一对多包含两种情况:一个表的一条数据到一个表的多条数据,即横转纵。这个插件在kettle中有。第二种是一个表的一条数据到多个表的多条数据,这种情况就相当于是多个一对一的情况。多对一就是反过来了。除了这些其实还有一个特殊的需求,就是表中一个字段中会存在一个公式,比如A+B,这里的A和B都需要替换成其他表中对应字段的值。这是一种特殊的需求,需要开发自己的插件来实现。
设计方案判断是否可行标准。
1、
新增 | 修改 | 删除 | |
一对一 | |||
一对多 | |||
多对一 |
3、对每次处理的数据条数可以进行控制。
设计方案:
对于源表的每条变化都要进行记录,在源表上建立触发器,对增删改进行监控。所以就需要一张变动表 来记录所有的记录。这里还有一种方式,就是通过时间戳的方式,就不需要记录每一条记录的时间了。
对于源表到目的表的对应情况,以及需要用什么样的转换过程,需要一张配置表。
由于转换对应关系是通过存储过程来实现的,所以就需要一个目的临时表,而不是直接进入目的表中。目的临时表比目的表多两个字段。用来表示源和目的的关系。
这样就设计完了。至于实现就见下:
实现方式:
对每一条数据进行提取转换装载后再进行下一条的整个流程,可想而知,本来kettle就是并行的,结果现在就是单行了,效率低的吓人。在目的表中为10W条数据的时候,速度在每分钟150条左右。这根本不符合需求,虽然需求只需要每分钟500条就够了。第一种需求是为了对每一条数据进行详细记录是否成功,如果失败可以及时的知道,并且处理。所以进行一下的更改。将提取转换 和装载分开进行,而且是批量进行。对于日志就在存储过程中进行记录。(计划开发个插件进行记录。)。
图就发不了了,如果大家有什么疑问给我留言。我看到后一定给各位回复。。。。。。
相关文章推荐
- ETL工具kettle实现循环
- ETL工具kettle怎么将多个转换集成到一个作业中
- etl工具,kettle实现循环
- etl工具,kettle实现了周期
- ETL工具kettle的使用二——怎么实现数据连接的重复使用
- ETL工具kettle怎么实现增量数据抽取:二 时间戳
- ETL工具kettle与java结合使用程序生成一个简单的转化文件
- etl工具,kettle实现循环
- 开源作业调度工具实现开源的Datax、Sqoop、Kettle等ETL工具的作业批量自动化调度
- ETL工具kettle实现循环
- 开源作业调度工具实现开源的Datax、Sqoop、Kettle等ETL工具的作业批量自动化调度
- 开源作业调度工具实现开源的Datax、Sqoop、Kettle等ETL工具的作业批量自动化调度
- Swift利用CoreData实现一个上班签到的小工具
- 用C语言实现一个自己的文件拷贝工具
- sessionListener 实现解决一个账号不同时在线需求。
- PyQT实现一个自动生成配置工具
- Androd封装一个Log打印工具一键实现打印不打印
- 概述 RequireJS是一个工具库,主要用于客户端的模块管理。它可以让客户端的代码分成一个个模块,实现异步或动态加载,从而提高代码的性能和可维护性。它的模块管理遵守AMD规范(Asynchronou
- ETL工具kettle(4.+) 使用java编程生成.ktr文件
- 用dbforms实现一款基于UseCase的小型需求管理工具