1KETTLE基本知识讲义内容•KETTLE介绍•KETTLE的要求环境(JDK版本)、安装、基本操作。•KETTLE的组件的类型基本说明(作业与转换)•案例•JAVASCRIPT的基本应用•KETTLE输出日志说明•启动脚本说明。2简介•KETTLE是一款国外开源的ETL工具,纯JAVA编写,可以在WINDOW、LINUX、UNIX上运行,绿色无需安装,数据抽取高效稳定。•ETL是数据抽取(EXTRACT)、清洗(CLEANING)、转换(TRANSFORM)、装载(LOAD)的过程。3ETL实现方式•手工编码,编写脚本,JAVA,PYTHON•商业ETL工具软件•INFORMATICA•IBMDATASTAGE•MICROSOFTSSIS•ORACLEODI•开源ETL工具软件•KETTLE•TALEND•CLOVERETL•KETL,OCTOPUS…4KETTLE基本情况•源代码下载地址:•SVN://SOURCE.PENTAHO.ORG/SVNKETTLEROOT/KETTLE/TRUNK•官方文档:•BUG报告地址:•官方论坛:•=135•中文论坛:•当前版本:VERSION5.2•原作者:MATT•LICENSE:4.3以前LGPL,4.3以后改为APACHE25KETTLE历史•2006年KETTLE2.2,KETTLE2.3(KETTLE开源,LICENSE为LGPL)•2007年KETTLE2.4,KETTLE2.5(被PENTAHO公司收购,更名为PDI)•2008年KETTLE3.0,KETTLE3.1•2009年KETTLE3.2(一个使用时间较长的稳定版本)•2010年KETTLE4.0,KETTLE4.1•2011年KETTLE4.2•2012年KETTLE4.3,KETTLE4.4(LICENSE变更为APACHE2,支持大数据)•2013年KETTLE5.0•2014年KETTLE5.1、5.26KETTLE学习资料•1.、•2.•3.《KETTLECOOKBOOK》•4.《PENTAHO3.2DATAINTEGRATIONBEGINNER’SGUIDE》5.《KETTLESOLUTION》•6.KETTLE源代码7KETTLE的安装运行•KETTLE要求先安装JDK1.5版本或以上•下载地址:•无需安装下载后直接运行SPOON.BAT即可8KETTLE资源库–-元数据•元数据的通用概念:“描述性数据”或“数据的数据”•ETL的元数据:描述ETL要执行的任务•在KETTLE里元数据的存储方式:•资源库•资源库包括文件资源库、数据库资源库•KETTLE4.0以后资源库类型可以插件扩展•XML文件•KTR转换文件的XML的根节点必须是TRANSFORMATION•KJB作业XML的根节点是JOB9KETTLE的组件的类型基本说明(作业与转换)•KETTLE中有两种脚本文件,TRANSFORMATION(转换,后缀为.KTR)和JOB(作业,后缀为.KJB),TRANSFORMATION完成针对数据的基础转换,好比工厂里的生产流水线,每个组件相当于一个员工;JOB则完成整个工作流的控制,好比工厂里的管理。•如果用记事本打开文件可发现转换和作业都是XML类型文件。10KETTLE的几个子程序•SPOON.BAT:图形界面方式启动作业和转换设计器。•PAN.BAT:命令行方式执行转换。•KITCHEN.BAT:命令行方式执行作业。•CARTE.BAT:启动WEB服务,用于KETTLE的远程运行或集群运行。•ENCR.BAT:密码加密11KETTLE的组件的类型基本说明(作业与转换)•作业:分串行执行和并行执行,串行执行是先执行完其中一条线再执行另一条线,并行是两条线同时执行,同一条线上的两个步聚会先执行前面的再执行后面的,每个步骤执行结果分两种:TRUE(成功)/FALSE(失败),根据返回结果可以控制流程走向。12转换和作业•KETTLE的SPOON设计器用来设计转换(TRANSFORMATION)和作业(JOB)。•转换主要是针对数据的各种处理,一个转换里可以包含多个步骤(STEP)。•作业是比转换更高一级的处理流程,一个作业里包括多个作业项(JOBENTRY),一个作业项代表了一项工作,转换也是一个作业项。•用户通过SPOON创建的转换、作业、数据库连接等可以保存在资源库和XML文件中。•转换文件以KTR为扩展名,作业文件以KJB为扩展名•资源库可以是各种常见的数据库。可以在SPOON中自动创建资源库,资源库默认用户名和密码是ADMIN/ADMIN13KETTLE的组件的类型基本说明(作业与转换)•作业流程图说明14KETTLE的组件的类型基本说明(作业与转换)•转换:一开始所有步骤同时运行,记录会从最前端的步骤向后传递,传递到相应步骤则该记录被该步骤作相应处理,处理完成再把记录往后传递,记录传递分复制和分发两种模式。15KETTLE的组件的类型基本说明(作业与转换)•复制:把一份数据复制成多份,后面步骤各占一份。•分发:把一份数据平均分配给后面步骤。16KETTLE的组件的类型基本说明(作业与转换)•在转换组件上右键->显示输入字段(显示输出字段)可以查看前面步骤流过来的记录字段情况和该字段是后面步骤传递的字段信息情况。17基于表对表的同步•表对表同步是最基本的同步方式之一•实现步骤:一、建立源库连接和目标库连接二、使用表输入组件进行源表数据读取三、对记录进行适配整理四、使用表输出组件输出到目标表18基于表对表的同步•新建一个转换:文件->新建->转换19基于表对表的同步20基于表对表的同步21基于表对表的同步22基于表对表的同步23基于文件到表的同步•新建一个转换•流程:从文件读取记录插入到数据库中24基于文件到表的同步25基于文件到表的同步26基于文件到表的同步27基于表到文件的同步•新建一个转换•实现从表里读取记录生成文件28基于表到文件的同步29基于表到文件的同步30基于表到文件的同步31JAVASCRIPT的基本应用•JAVASCRIPT基本语法:•VARJSSTR=“HELLOKELLO”;//定义一个字符串变量•VARJAVASTR=NEWJAVA.LANG.STRING(“JAVASTRING”);//JAVA.LANG.STRING实例•WRITETOLOG(“M”,STR);//打印字符串到日志输出•VARNUM=1;//定义一个整型•VARARR=NEWARRAY();//定义一个数组无任何元素•ARR.PUSH(“添加一个元素到数组未位”);•VARARR1=NEWARRAY(3,“FTP补采”);//定义一个数组32JAVASCRIPT的基本应用IF…ELSE语句VARBOOL=TRUE;IF(BOOL){//BOOL值为TRUEALERT(“正确”);}ELSE{//BOOL值为FALSEALERT(“错误”);}33JAVASCRIPT的基本应用FOR语句VARARR=NEWARRAY(1,“2”,“THISISSTRING”);FOR(VARI=0;IARR.LENGTH;I++){IF(ARR[I]==2){ALERT(“THEVALUEIS”+ARR[I]);}}34JAVASCRIPT的基本应用方法定义VARSTR=“WHJ”;//全局变量FUNCTIONSAYHELLO(NAME){//带一个参数的方法IF(NAME==NULL)RETURN“HELLO“+STR;ELSERETURN“HELLO“+NAME;//返回一个字符串}WRITETOLOG(“M”,SAYHELLO());//方法调用35JAVASCRIPT的基本应用异常处理TRY…CATCH…TRY{VARVALUE=100/0;}CATCH(E){THROWNEWJAVA.LANG.EXCEPTION(“除数不能为0:+E);}异常处理通常是防止未知错误产生所采取的处理措施。异常处理的好处是你不用再绞尽脑汁去考虑各种错误,这为处理某一类错误提供了一个很有效的方法,使编程效率大大提高。36JAVASCRIPT的基本应用37作业调用作业、转换•文件->新建->作业•作业可以调用作业,这样方便流程控制。38作业调用作业、转换39作业调用作业、转换•作业也可以调用转换40作业调用作业、转换41KETTLE自带例子•菜单:文件->从URL打开文件->SAMPLES•也可以直接到KETTLE工具下的SAMPLES目录打开42KETTLE输出日志说明•日志输出是检查程序运行情况的重要手段,也是程序维护必不可少的环节。•KETTLE在日志输出方面也有很好的控制功能。KETTLE日志输出共分七个等级:没有日志(NOTHING)、错误日志(ERROR)、最小日志(MINIMAL)、基本日志(BASIC)、详细日志(DETAILED)、调试日志(DEBUG)、行级日志(ROWLEVEL)。默认为基本日志。43KETTLE输出日志说明•NOTHING:不显示任何输出•ERROR:仅仅显示错误信息•MINIMAL:使用最小的日志•BASIC:缺省的日志级别•DETAILED:给出日志输出的细节•DEBUG:调试目的,调试输出•ROWLEVEL:打印出每一行记录的信息44KETTLE输出日志说明•作业日志输出说明•作业运行状态有两种:TRUE(成功)/FALSE(失败)。•注意:失败不代表运行异常、出错。有时只是用来控制流程的一种决策、一种手段。45KETTLE输出日志说明•程序异常退出情况46KETTLE输出日志说明•转换日志输出说明•I:当前步骤生成的记录数(从表输入、文件读入)•O:当前步骤输出的记录数(输出到文件、表)•R:当前步骤从前一步聚读取的记录数•W:当前步骤向后面步骤抛出的记录数•U:当前步骤更新过的记录数•E:当前步骤处理出错的记录数47启动脚本说明•KETTLE程序启动分两种,一种是作业、一种是转换。•作业调用启动脚本:KITCHEN.SH(KITCHEN.BAT)•转换调用启动脚本:PAN.SH(PAN.BAT)48KETTLE运行方式–PAN命令行•参数名列表:•/REP:资源库名称•/USER:资源库用户名•/PASS:资源库密码•/TRANS:要启动的转换名称•/DIR:目录(不要忘了前缀/)•/FILE:要启动的文件名(转换文件)•/LEVEL:日志级别(ERROR,NOTHING,MINIMAL,BASIC,DETAILED,DEBUG,ROWLEVEL)•/LOGFILE:要写入的日志文件•/LISTDIR:列出资源库里的目录•/LISTTRANS:列出指定目录下的转换•/LISTREP:列出可用资源库•/EXPREP:将资源库里的所有对象导出到XML文件中•/NOREP:不要将日志写到资源库中•/SAFEMODE:安全模式下运行:有额外的检查•/VERSION:显示转换的版本,校订和创建日期•/PARAM:设置参数,参数格式NAME=VALUE,例如-PARAM:FOO=BAR•/LISTPARAM:列出转换里已经设置好的参数。•/MAXLOGLINES:内存中保存日志的最大日志行数•/MAXLOGTIMEOUT:内存中保存日志的最长时间49KETTLE运行方式–KITCHEN命令行•参数名列表:•/REP:资源库名称•/