Kettle的一些心得和常犯错的地方
最近突发奇想,有要坚持一直写博客的想法。正好目前在某些地方需要Kettle来清洗数据,于是作为Kettle新人的我准备将最近常犯的错误和一些心得记录下来,这样一则可以多多少少帮到别人,再有就是记录下自己学习的点点滴滴,日积月累,把自己的博客当做学习笔记。
有什么不足或者错误之处,还希望各位大佬多多纠正!
说完了新人必说的废话,先来简单说一下Kettle这款软件,作为一款纯java语言写出来的数据清理软件,整体来说还是蛮不错的,但是数据量一旦大到某种程度(比如我就需要清洗100万条数据),因为它就与jvm紧紧相关。所以我在数据清理之前首先编辑spoon.bat,将3大参数值调高,当然这也是要看电脑的配置。配置信息网上有很多。
进入主界面后,点击新建转换,输入/输出什么的组件拖入就不一一叙述了。这里我使用的是postgre数据库进行的链接和清洗,所以建议数据库名和表名都用英文小写,否则表的输入可能出现无法预览、表输出字段无法选择等情况。
这里我需要吐槽一下输出插件当中的更新/插入组件。个人建议如果不是必须之选,就不要用这个组件。因为它实在是太慢了。
更新/插入插件的意思个人理解:先是遍历整个表,如果表中的字段与流中的字段对不上,先进行插入工作,将该条信息插入表中,若字段对的上就更新全部数据(插入>更新)。
每一条数据都要进行表的遍历,整体速度肯定会下来。更新/插入操作的数据量大约在每秒8-10条。这里再提一句,我当时为了提高速度,将更新/插入插件复制了6个并行化同时进行,这样可能会造成死锁的情况!
个人推荐:整体更新数据就用更新组件会效率高一些;若是进行插入某个字段的信息操作,我是用的是数据集关联(左关联)方法,效率飞速提高。但是这里有一点小小的注意事项:数据集关联操作之前一定要对选择的字段进行排序(升序、降序都可以),否则最后的表中信息可能会有偏差。
至于更新/插入操作我看网上还有一种效率很高的方法就是java脚本,自定义更新和插入。这还有待我接下来深入的学习和了解。
人生第一次写博客还是蛮紧张的,语言和表达能力还有待提高。希望各位大佬多多提出意见和建议,指出错误。我一定认真听取,努力提高。
谢谢各位大佬!
- c语言中函数返回局部变量的指针(一些容易犯错的地方)
- AsyncSocket使用心得和一些需要注意的地方
- 关于C#编程中引用与值类型赋值的一些容易犯错的地方
- Ext 4.2.1初次使用心得,包括一些不合理的地方帮助您少走弯路
- sql语句中一些容易犯错的地方
- caffe实现focal loss层的一些理解和对实现一个layer层易犯错的地方的总结
- 【原创】使用Kettle的一些心得和经验
- java编程中'为了性能'一些尽量做到的地方
- 最近项目的一些心得(纯贴代码)
- PC 安装双系统的一些心得
- 一些心得挺深刻的书
- 关于信号槽连接地方的一点心得,一个问题困扰了一下午才解决,纪念一下。
- SQL开发中容易忽视的一些小地方(一)
- 关于团队管理的一些心得体会
- 写手机移动端的一些心得
- Android图片加载框架Glide用法及一些使用心得
- php+jquery编码方面的一些心得(utf-8 gb2312)
- 《别做正常的傻瓜》的一些读书心得
- Kettle的一些常见问题
- 二分查找法的一些心得