1、Kettle 基础培训基础培训(一)第1页,共47页。目录一、一、Kettle 介绍介绍二、二、Kettle的要求环境(的要求环境(JDK版本)、安装、版本)、安装、基本操作。基本操作。三、三、Kettle的组件的类型基本说明(作业与转的组件的类型基本说明(作业与转换)换)四、基于表对表的同步四、基于表对表的同步五、基于文件到表的同步五、基于文件到表的同步六、基于表到文件的同步六、基于表到文件的同步七、七、JAVASCRIPT的基本应用的基本应用八、文件八、文件FTP下载、上传。下载、上传。九、作业调用作业、转换。九、作业调用作业、转换。十、启动脚本说明。十、启动脚本说明。十一、十一、JAVA
2、调用作业、转换调用作业、转换十二、使用原则十二、使用原则第2页,共47页。简介ETLETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)作为BI/DW(Business Intelligence)的核心和灵魂,能够按照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。如果说数据仓库的模型设计是一座大厦的设计蓝图,数据是砖瓦的话,那么ETL就是建设大厦的过程。在整个项目中最难部分是用户需求分析和模型设计,而ETL规则设计和实施则是工作量最大的,约占整个项目的60%80%,这是国内外从众多实践中得到的普遍
3、共识。ETL是数据抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)的过程。是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。第3页,共47页。简介KettleKettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提
4、供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件,transformation和job,transformation工作流的控制。完成针对数据的基础转换,job则完成整个第4页,共47页。KETTLE的要求环境(的要求环境(JDK版本)、安装、基本操作版本)、安装、基本操作 KETTLE要求先安装JDK1.5版本或以上 无需安装下载后直接运行spoon.bat即可5第5页,共47页。KETTLE的组件的类型基本说明(作业与转换)Kettle中有两种脚本文件,transformation(转换,后缀为.ktr)和job(作业,后缀为.kjb),transfo
5、rmation完成针对数据的基础转换,好比工厂里的生产流水线,每个组件相当于一个员工;job则完成整个工作流的控制,好比工厂里的管理。如果用记事本打开文件可发现转换和作业都是xml类型文件。6第6页,共47页。KETTLE的组件的类型基本说明(作业与转换)7 作业:分串行执行和并行执行,串行执行是先执行完其中一条线再执行另一条线,并行是两条线同时执行,同一条线上的两个步聚会先执行前面的再执行后面的,每个步骤执行结果分两种:true(成功)/false(失败),根据返回结果可以控制流程走向。第7页,共47页。KETTLE的组件的类型基本说明(作业与转换)8 作业流程图说明第8页,共47页。KET
6、TLE的组件的类型基本说明(作业与转换)9 转换:一传递分复制和分发两种模式。开始所有步骤同时运行,记录会从最前端的步骤向后传递,传递到相应步骤则该记录被该步骤作相应处理,处理完成再把记录往后传递,记录第9页,共47页。KETTLE的组件的类型基本说明(作业与转换)10 复制:把一份数据复制成多份,后面步骤各占一份。分发:把一份数据平均分配给后面步骤。第10页,共47页。基于表对表的同步11 表对表同步是最基本的同步方式之一 实现步骤:一、建立源库连接和目标库连接二、使用表输入组件进行源表数据读取三、对记录进行适配整理四、使用表输出组件输出到目标表第11页,共47页。KETTLE的组件的类型基
7、本说明(作业与转换)12 新建一个转换:文件新建转换第12页,共47页。基于表对表的同步13第13页,共47页。基于表对表的同步14第14页,共47页。基于表对表的同步15第15页,共47页。基于表对表的同步16第16页,共47页。基于文件到表的同步17 新建一个转换 流程:从文件读取记录插入到数据库中第17页,共47页。基于文件到表的同步18第18页,共47页。基于文件到表的同步19第19页,共47页。基于文件到表的同步20第20页,共47页。基于表到文件的同步21 新建一个转换 实现从表里读取记录生成文件第21页,共47页。基于表到文件的同步22第22页,共47页。基于表到文件的同步23第
8、23页,共47页。基于表到文件的同步24第24页,共47页。JAVASCRIPT的基本应用25第25页,共47页。文件FTP下载、上传26 作业:FTP下载 从FTP上下载相应文件到指定目录下第26页,共47页。文件FTP下载、上传27第27页,共47页。文件FTP下载、上传28第28页,共47页。文件FTP下载、上传29 作业:FTP上传 上传本地文件到相应FTP指定目录上第29页,共47页。文件FTP下载、上传30第30页,共47页。作业调用作业、转换31 文件新建作业 作业可以调用作业,这样方便流程控制。第31页,共47页。作业调用作业、转换32第32页,共47页。作业调用作业、转换33
9、 作业也可以调用转换第33页,共47页。作业调用作业、转换34第34页,共47页。启动脚本说明35 KETTLE程序启动分两种,一种是作业、一种是转换。作业调用启动脚本:kitchen.sh(kitchen.bat)转换调用启动脚本:pan.sh(pan.bat)第35页,共47页。启动脚本说明36 kitchen.sh(span.sh)说明第36页,共47页。启动脚本说明37 Kitchen.bat(span.bat)说明第37页,共47页。启动脚本说明38 WINDOWS系统下的作业启动脚本写法/file 作业入口路径/level 日志输出等级/logfile 日志输出文件第38页,共47
10、页。启动脚本说明39 LINUX系统下的启动脚本写法第39页,共47页。启动脚本说明40 转换调动脚本写法 WINDOWS和LINUX系统的启动脚本的写法基本一样,就是pan.sh/pan.bat的区别第40页,共47页。Java调用 引用Kettle jar包第41页,共47页。Java调用JOB传入变量传入变量JOB文件设置变量:变量变量传递:传递:Variable substitution 选中第42页,共47页。Java调用JOB调用JOBJobMeta jobMeta=new JobMeta(jobPath,null);JVM设置变量:System.getProperties().s
11、etProperty(key,value);Job job=new Job(null,jobMeta);job.start();job.waitUntilFinished();第43页,共47页。Java调用KTR传入变量第44页,共47页。Java调用KTR调用ktrTransMeta localTransMeta=localTransMeta=new TransMeta(ktrPath);设置变量localTransMeta.setVariable(key,value)Trans tran=new Trans(localTransMeta)tran.execute(null);tran.w
12、aitUntilFinished();第45页,共47页。使用原则可以使用sql 来做的一些操作尽量用sql;Group,merge,stream lookup,split field 这些操作都是比较慢的,想办法避免它们.能用sql 就用sql尽量避免使用update,delete 操作,尤其是update,如果可以把update 变成先delete,后insert.尽量不要用kettle 的calculate 计算步骤,能用数据库本身的sql 就用sql,不能用sql 就尽量想办法用procedure,实在不行才是calculate 步骤.能使用truncate table 的时候,就不要使用delete all row 这种类似sql尽量提高批处理的commit size如果删除操作是基于某一个分区的,就不要使用delete row 这种方式;直接truncate 分区(ALTER TABLE tablename TRUNCATE PARTITION PART_1)第46页,共47页。演讲完毕,谢谢观看!第47页,共47页。