kettle经验总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Pan命令来执行转换,下面给出的是pan参数。
Kitchen 命令用于执行作业
Carte 用于添加新的执行引擎
Kettle的资源库和Carte的登录,密码都是用Encr加密的。
使用中遇到的问题及总结:
这两个组件用之前必须先对数据进行排序,否则数据会不准确。而且merge join会很慢,尽量要少用。
这个组件默认auto commit false,所以如果要执行一些sql,必须在后面加commit。
貌似没什么用,其实也没什么用。Kettle讲究有进有出,如果最后的没有输出,要加上这个空操作。实际上测试不写也没问题。
执行java script,这个组件很强大,大部分用组件实现不了
的东西,都可以通过这个来转换。而且可以调用自己写的java 类。强大到不行~
这个组件很奇怪,顾名思义调用存储过程的,但实际上不能调用不传参数的存储过程。如果有没有参数的存储过程,现在的解决方案是用sql脚本来执行。
一个设置变量,一个获得变量。这个本来没什么要说的,但在实际应用中发现,在一个trans中设置的变量,在当前trans中并不一定能获得到,所以设计的时候先在一个trans中设置变量,然后在后续的trans中来获得就可以了。
让人惊喜的东西,大数据量导入,事实上让人近乎绝望,研究了一天依旧不会用。而且我怀疑确实不能用。其实这个组件无非是实现了copy命令,目前的解决方案,sql脚本,先汗一个,不知道跟这些组件相比效率会怎样。
三个亲兄弟,功能差不多,长的也很像,看了源码感觉,性能有差异,就性能而言,文本文件输入组件很差,它不如csv file input和fixed file input组件,因为后面的两者启用了java nio技术。顺便提一句而已。
kettle内置性能监控,通过分析能知道哪一环节出现瓶颈。
以上是trans的内容,关于job相比而言简单一些,只是调用trans而已。值得一说的是job 以start开始,这个start只能有一个。当然不说很多人也会认为是只能有一个,
但我之所以这么说是因为一个trans可以有多个开始。Start中可以设置job的定时启动,貌似做的很强大,实际用起来不知道怎么样,因为在之前的版本中job是不能定时调度的,要想调度只能用操作系统的定时任务来启动了。
浪费了一些时间:
花了一天半的时间研究了一下,kettle可以以web方式启动,最终发现跟以客户端启动没什么区别,相比感觉客户端的方式更好一些。
另一件浪费时间的事情就是花了接近两天的时间研究大批量导入,最终失败了,好在最后想到接近方案了,具体的上面有提到。
今后要做的可能有意义的事情:
Kettle提供api可以用java来控制,将来可以花些时间来研究一下这方面,这样做的意义是可以在java程序中调用kettle的job和trans,以后可以集成在其他程序中,感觉还是很强大的。
总结:
介绍这么多,其实只是kettle的冰山一角。要想了解更多,要把kettle内置的例子多看一下,目录为E:\data-integration\samples\ 等你看完了之后发现会的依旧是冰山一角,因为例子很古老,多年之前的,很多组件并没有介绍。目前为止,kettle提供的组件基本能满足需求,如果将来发现满足不了要求,可以这样做,Kettle暴露了一些接口,可以通过这些接口,来扩展开发新的组件。