mikean 2008-03-19
Kettle的一些应用问题
摘要:本文主要介绍使用kettle设计一些ETL任务的时候可能遇到的跟kettle环境有关的一些问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案
1.Join
我得到A数据流(不管是基于文件或数据库),A包含field1,field2,field3字段,然后我还有一个B数据流,B包含field4,field5,field6,我现在想把它们‘加,起来,应该怎么样做.
这是新手最容易犯错的一个地方,A数据流跟B数据流能够Join,肯定是它们包含joinkey,joinkey可以是一个字段也可以是多个字段。如果两个数据流没有joinkey,那么它们就是在做笛卡尔积,一般很少会这样。比如你现在需要列出一个员工的姓名和他所在部门的姓名,如果这是在同一个数据库,************************
5.事务型ETL
Kettle里面是没有所谓事务的概念的,每个步骤都是自己管理自己的连接的,在这个步骤开始的时候打开数据库连接,在结束的时候关闭数据库连接,一个步骤是肯定不会跨session的(数据库里面的session),另外,由于kettle是并行执行的,所以不可能把一个数据库连接打×××××××××××××
7.kettle的性能
kettle本身的性能绝对是能够应对大型应用的,一般的基于平均行长100的一条记录,即使源数据库和目标数据库以及kettle都在同一台机器上(最常见的桌面工作模式,双核,1G内存),速度大概都可以到
尽量使用数据库连接池
尽量提高批处理的commitsize
尽量使用缓存,缓存尽量大一些
Kettle是Java做的,尽量用大一点的内存参数启动Kettle.
可以使用sql来做的一些操作尽量用sql
Group,merge,streamlookup,splitfield这些操作都是比较慢的,想办法避免他们.
插入大量数据的时***********************
10.字符集
原文地址在我的新blog:http:www.gemini5201314.net