Kettle操作手册(当前使用版本为:Pentaho Data Integration version 7.1.0.0-12)
1.kettle安装
1.1 下载压缩包(data-integration.zip)。直接解压到本地;
1.2 配置环境变量。此版本要求本地jdk环境为1.8及以上。需要在环境变量中指定KETTLE_HOME=文件解压之后的路径。如:我本地解压在D:/soft下,则配置:KETTLE_HOME=D:/soft/data-integration。
2.kettle使用
2.1kettle 循环的 使用
当时使用的场景是:运维人员可以选择是全量重新抽取还是选取日期时间段之内的数据按照日期一天一天的进行重新抽取,前面的转换会将选取的所有时间(以日期为单位:YMD)放入列表中。循环时,以日期列表的大小为循环的大小,在循环的过程中对抽取的日期进行赋值。
kettle中循环的实现需要使用到:JavaScript、检验字段的值、循环中的业务处理转换。如下图所示:
循环初始化JavaScript中:
检验字段值:
设置循环变量:
2.2全局变量与配置文件(xml文件做数据库连接配置用)的使用
2.2.1变量设置之后只能在下一个转换开始才会生效。所以作业一般是:【开始】->【变量设置(含数据库连接变量、状态标识常量(如:设置全局参数=1,标识抽取成功,当数据转换过程中某一步骤失败时,需要将标识修改为0).ktr】->【数据抽取.ktr】->【状态修改.ktr】-【成功】。
2.2.2设置配置文件(以xml文件为例)。
XML文件配置:
2.2.3kettle中变量的读取:${变量名} 或 %%变量名%%
例如:数据库连接:
全局变量的修改: 使用JavaScript代码进行修改。其中写入:setVariable(“变量名”,“0”,“r”);
2.3字符集设置
数据库连接选项中增加命名参数:characterEncoding - utf8
2.4kettle默认将空字符串 行数据解析为null,当进行表输出时,当数据库设置为not null 时会导致错误。当进行了异常数据处理时,会在(I=0, O=326, R=387, W=326, U=0, E=61)中标识,无异常消息抛出,导致排查很耗时。
解决方法:在data-integration/.kettle/kettle.properties 配置文件中增加配置:KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y。
3.kettle发布
3.1 发布
以当前使用版本为:Pentaho Data Integration version 7.1.0.0-12为例。发布kettle程序:
a.确认服务器jdk版本。当前版本要求jdk版本为1.8及以上。
b.需要将data-integration上传至对应服务器(windows,Linux均如此)
c.环境变量中增加:KETTLE_HOME变量指向data-integration目录下。
3.2定时调度
a.windows系统
使用windows自带的定时调度任务.bat文件。
D:
cd D:\data-integration
kitchen /file XXX.kjb
b.linux系统
使用crontab定时任务调度执行.sh文件。
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_171
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
rm -rf /usr/local/src/data-integration/system/karaf/caches/{kitchen,pan,spoon}
/usr/local/src/data-integration/kitchen.sh -file=/XXX/XX/XXXX.kjb level=Basic>> /var/log/XXXXX/hz_$(date +%Y%m%d%H%M).log &