开源ETL工具kettle系列之常见问题.doc

开源ETL工具kettle系列之常见问题.doc

ID:48442578

大小:23.35 KB

页数:8页

时间:2020-01-28

开源ETL工具kettle系列之常见问题.doc_第1页
开源ETL工具kettle系列之常见问题.doc_第2页
开源ETL工具kettle系列之常见问题.doc_第3页
开源ETL工具kettle系列之常见问题.doc_第4页
开源ETL工具kettle系列之常见问题.doc_第5页
资源描述:

《开源ETL工具kettle系列之常见问题.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、开源ETL工具kettle系列之常见问题kettle,ETL,工具,开源1.Join我得到A数据流(不管是基于文件或数据库),A包含field1,field2,field3字段,然后我还有一个B数据流,B包含field4,field5,field6,我现在想把它们‘加’起来,应该怎么样做.这是新手最容易犯错的一个地方,A数据流跟B数据流能够Join,肯定是它们包含joinkey,joinkey可以是一个字段也可以是多个字段。如果两个数据流没有joinkey,那么它们就是在做笛卡尔积,一般很少会这样。比如你现在需要列出一个员工的姓名和他所

2、在部门的姓名,如果这是在同一个数据库,大家都知道会在一个sql里面加上where限定条件,但是如果员工表和部门表在两个不同的数据流里面,尤其是数据源的来源是多个数据库的情况,我们一般是要使用DatabaseJoin操作,然后用两个databasetableinput来表示输入流,一个输入是部门表的姓名,另一个是员工表的姓名,然后我们认为这两个表就可以”Join”了,我们需要的输出的确是这两个字段,但是这两个字段的输出并不代表只需要这两个字段的输入,它们之间肯定是需要一个约束关系存在的。另外,无论是在做Join,Merge,Update,

3、Delete这些常规操作的时候,都是先需要做一个compare操作的,这个compare操作都是针对comparekey的,无论两个表结构是不是一样的,比如employee表和department表,它们比较的依据就是employee的外键department_id,没有这个comparekey这两个表是不可能连接的起来的..对于两个表可能还有人知道是直接sql来做连接,如果是多个输入数据源,然后是三个表,有人就开始迷茫了,A表一个字段,B表一个字段,C表一个字段,然后就连Join操作都没有,直接databasetableoutput,

4、然后开始报错,报完错就到处找高手问,他们的数据库原理老师已经在吐血了。如果是三个表连接,一个sql不能搞定,就需要先两个表两个表的连接,通过两次comparekey连接之后得到你的输出,记住,你的输出并不能代表你的输入.下面总结一下:1.单数据源输入,直接用sql做连接2.多数据源输入,(可能是文本或是两个以上源数据库),用databasejoin操作.3.三个表以上的多字段输出.2.Kettle的数据库连接模式Kettle的数据库连接是一个步骤里面控制一个单数据库连接,所以kettle的连接有数据库连接池,你可以在指定的数据库连接里面

5、指定一开始连接池里面放多少个数据库连接,在创建数据库连接的时候就有Pooling选项卡,里面可以指定最大连接数和初始连接数,这可以一定程度上提高速度.3.transaction我想在步骤A执行一个操作(更新或者插入),然后在经过若干个步骤之后,如果我发现某一个条件成立,我就提交所有的操作,如果失败,我就回滚,kettle提供这种事务性的操作吗?Kettle里面是没有所谓事务的概念的,每个步骤都是自己管理自己的连接的,在这个步骤开始的时候打开数据库连接,在结束的时候关闭数据库连接,一个步骤是肯定不会跨session的(数据库里面的sess

6、ion),另外,由于kettle是并行执行的,所以不可能把一个数据库连接打开很长时间不放,这样可能会造成锁出现,虽然不一定是死锁,但是对性能还是影响太大了。ETL中的事务对性能影响也很大,所以不应该设计一种依赖与事务方式的ETL执行顺序,毕竟这不是OLTP,因为你可能一次需要提交的数据量是几百GB都有可能,任何一种数据库维持一个几百GB的回滚段性能都是会不大幅下降的.4.我真的需要transaction但又不想要一个很复杂的设计,能不能提供一个简单一点的方式Kettle在3.0.2GA版中将推出一种新功能,在一个tableoutput步

7、骤中有一个Miscellaneous选项卡,其中有一个Useuniqueconnections的选项,如果你选中的话就可以得到一个transaction的简单版,由于是使用的单数据库连接,所以可以有错误的时候回滚事务,不过要提醒一点是这种方式是以牺牲非常大的性能为前提条件的,对于太大的数据量是不适合的(个人仍然不建议使用这种方式)5.temporary表如何使用我要在ETL过程中创建一个中间表,当某个条件成立的时候,我要把中间表的数据进行转换,当另一条件成立的时候我要对中间表进行另一个操作,我想使用数据库的临时表来操作,应该用什么步骤。

8、首先从temp表的生命周期来分,temp分为事务临时表和会话临时表,前面已经解释过了,kettle是没有所谓事务的概念的,所以自然也没有所谓的事务临时表。Kettle的每个步骤管理自己的数据库连接,连接一结

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。