您的位置:首页 > 其它

Kettle的一些心得和常犯错的地方

2019-04-07 22:53 1151 查看

最近突发奇想,有要坚持一直写博客的想法。正好目前在某些地方需要Kettle来清洗数据,于是作为Kettle新人的我准备将最近常犯的错误和一些心得记录下来,这样一则可以多多少少帮到别人,再有就是记录下自己学习的点点滴滴,日积月累,把自己的博客当做学习笔记。
有什么不足或者错误之处,还希望各位大佬多多纠正!

说完了新人必说的废话,先来简单说一下Kettle这款软件,作为一款纯java语言写出来的数据清理软件,整体来说还是蛮不错的,但是数据量一旦大到某种程度(比如我就需要清洗100万条数据),因为它就与jvm紧紧相关。所以我在数据清理之前首先编辑spoon.bat,将3大参数值调高,当然这也是要看电脑的配置。配置信息网上有很多。

进入主界面后,点击新建转换,输入/输出什么的组件拖入就不一一叙述了。这里我使用的是postgre数据库进行的链接和清洗,所以建议数据库名和表名都用英文小写,否则表的输入可能出现无法预览、表输出字段无法选择等情况。

这里我需要吐槽一下输出插件当中的更新/插入组件。个人建议如果不是必须之选,就不要用这个组件。因为它实在是太慢了。

更新/插入插件的意思个人理解:先是遍历整个表,如果表中的字段与流中的字段对不上,先进行插入工作,将该条信息插入表中,若字段对的上就更新全部数据(插入>更新)。

每一条数据都要进行表的遍历,整体速度肯定会下来。更新/插入操作的数据量大约在每秒8-10条。这里再提一句,我当时为了提高速度,将更新/插入插件复制了6个并行化同时进行,这样可能会造成死锁的情况!

个人推荐:整体更新数据就用更新组件会效率高一些;若是进行插入某个字段的信息操作,我是用的是数据集关联(左关联)方法,效率飞速提高。但是这里有一点小小的注意事项:数据集关联操作之前一定要对选择的字段进行排序(升序、降序都可以),否则最后的表中信息可能会有偏差。

至于更新/插入操作我看网上还有一种效率很高的方法就是java脚本,自定义更新和插入。这还有待我接下来深入的学习和了解。

人生第一次写博客还是蛮紧张的,语言和表达能力还有待提高。希望各位大佬多多提出意见和建议,指出错误。我一定认真听取,努力提高。
谢谢各位大佬!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: