互联网与你我的世界 2018-01-11
Kettle使用心得汇总系列一
一、kettle实现的功能:
kettle可以实现从不同数据源(excel、数据库、文本文件等)获取数据,然后将数据进行整合、转换处理,可以再将数据输出到指定的位置(excel、数据库、文本文件)等;
通过kettle处理大量数据非常方便,如果window服务器或者Linux服务器硬件一般情况下,对于处理千万级一下的数据都是可以的;
二、Kettle作业与转换如何配合使用:
一个作业相当于一个主要任务项,在这个主线中可以调用其它若干个转换,每个转换中可以从作业这个主线中获取数据,然后将数据进行相应的处理操作,再将数据传递给作业主线,也可以在转换中单独获取数据------处理数据------输出数据;
并且如果对于需要设置变量的情况下,一般也是需要用到作业与转换的配合使用,因为变量在当前线中设置,不能再当前线中获取,需要到下一个线中才能够获取;
三、Kettle中设置编码格式:
如果处理的数据中有中文,需要对中文设置编码格式,一般是utf8格式,彻底的修改格式的方法就是,修改spoon.bat文件中增加如下信息:"-Dfile.encoding=UTF-8";
四、Kettle中调整运行性能:
Kettle默认的性能适用于普通的一般硬件,如果自己的电脑硬件比较好(内存比较大),可以对kettle的spoon.bat中的参数进行修改,这样可以适当的提高kettle的运行性能,主要是修改-Xms、-Xmx、-XX:MaxPermSize三个参数的值:
-Xms:设置JVM初始内存;
-Xmx:设置JVM最大可用内存;
-XX:MaxPermSize:设置JVM最大允许分配内存,按需分配;
非常注意:
1、-Xmx必须小于等于系统内存的1/4,要不然会报错,其他两个选项不大于-Xmx;
2、当系统内存为4G时-Xmx不能大于1G,当系统内存为8G或更大时,java版本必须是64位的才能识别出来,此时-Xmx可以为2G或更高
自己配置的信息:window服务器内存8G:
-XX:MaxPermSize = -Xmx = 4096m;
-Xms = 1024m
五、Kettle中常用的控件:
(1)作业中常用控件:
1、通用——START:作业开始;
2、通用——作业:指定某个作业循环执行;
3、通用——转换:指定某个转换,加入到作业中来;
4、通用——设置变量:设置变量,为了转换或者作业中获取变量;
5、通用——成功:作业完成操作;
(2)转换中常用控件:
1、输入——Excel输入:从excel文件中读取数据;
2、输入——文本文件输入:从文本文件中读取数据;
3、输入——生成随机数:用来生成指定类型的随机数;
4、输入——自定义数据常量:将值不变的变量存入到此处,方便管理;
5、输入——获取系统信息:可以获取系统信息(日期、命令行参数);
6、输入——表输入:从数据库表中读取数据;
7、输出——Excle输出:注意.xls格式输出行数有限制,一般输出.xlsx最好;
8、输出——插入/更新:根据指定的匹配字段,可以检测是插入新数据,还是修改旧数据;
9、输出——文本文件输出:将结果数据输出到文本文件中去;
10、输出——表输出:将结果数据输出到某个数据库的某个表中;
11、转换——增加常量:在原数据中将常量值增加新一列;
12、转换——排序记录:对原数据按照某个字段进行排序;
13、流程——空操作:将不需要的数据放到此处,类似垃圾箱;
14、流程——过滤记录:按照条件进行过滤,类似if-else;
15、流程——Switch/Case:与java中switch/case一样;
16、脚本——java代码:执行java代码;
17、脚本——javascript代码:执行javascript代码;
18、脚本——执行SQL脚本:执行sql;
19、连接——记录集连接:类似于sql的left join/right join/inner join,但是使用前的数据必须要经过排序;
20、作业——从结果获取记录:从作业中获取数据;
21、作业——复制记录到结果:将转换中的结果数据放到作业中去;
22、作业——获取变量:从作业中获取变量;
23、作业——设置变量:设置变量,从而让作业中能够获取变量;
六、Kettle中javascript脚本执行:
在javascript脚本中可以直接定义变量,可以直接从上一个控件中获取值,获取值的方法直接写前一个控件中某列的列明就好,定义的变量在后续的控件中都可以直接获取:
七、Kettle中常用的功能代码:
1、javascript生成uuid的代码:
var uuid = replace(java.util.UUID.randomUUID(),"_","");
2、Javascript截取前一个控件中某个字段的长度,获取另外一个变量:
var choice = substr(tydm,0,4);
0:开始截取的角标;4:表示截取的长度;
八、Kettle中常见的异常处理:
1、异常类型:java.lang.stackOverFlowError
原因:栈溢出,可能是在处理的数据比较大,栈默认值不够使用了;
解决方法:修改kettle中的启动项spoon.bat中的信息,添加一个Xss=1024m即可解决,如果还不够,可根据硬件来适当增加值;
2、中文输出乱码问题:
设置编码格式,具体操作上述有步骤;