《KETTLE使用培训(共38张).pptx》由会员分享,可在线阅读,更多相关《KETTLE使用培训(共38张).pptx(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Kettle使用培训使用培训部门:部门:EOMS讲师:刘晓源讲师:刘晓源目录 目的目的 Kettle介绍介绍 Kettle实战实战 使用原则使用原则目的 了解Kettle的作用与使用。Kettle介绍 目的目的 Kettle介绍介绍 家族介绍家族介绍 概念定义概念定义 Kettle实战实战 使用原则使用原则本节目标本节目标:1、知道Kettle是什么,能做什么。2、知道Kettle的一些概念。总体介绍 Kettle是一个ETL(Extract-Transform-Load )工具集,它为用户管理来自不同数据库的数据,描述自己要做的数据操作提供图形化的操作界面。总体介绍使用使用Kettle能为我
2、们项目带来以下好处:能为我们项目带来以下好处:对于业务人员 转换和工作(Job)以步骤流的方式呈现,更加直观,业务人员与开发人员沟通时可以把注意力集中在业务上。对于开发人员 1、图形化界面更加直观,开发人员上手快,加快开发效率。 即使是二次开发,图形化的步骤展现使二次开发人员更快进入开发状态,不用把精力浪费在代码阅读和业务逻辑分析上。 2、Kettle的javascript步骤运行开发人员通过编写JavaScript代码实现业务逻辑,并且允许在JavaScript调用java文件来实现复杂数据采集过滤逻辑。这样,开发人员只须把注意力放在写业务采集逻辑上就可以了,降低了开发采集的难度。 3、Ke
3、ttle提供方便的调试工具和详细的日志文件,方便开发人员跟踪调试。 4、Kettle提供计算I/O、数据库读/写次数工具,方便开发人员在开发完成后观察,以便性能调优。总体介绍要在项目上更好的发挥要在项目上更好的发挥Kettle的优势,还有以下一些问题待解决:的优势,还有以下一些问题待解决:1、调用方式问题:Kettle只提供了简单的调用方式。自己本身不提供轮训等工具。目前测试通过的只用两种:一种是在图形界面上点运行。另一种是在命令行模式输入运行命令。如果要实现轮训采集,需要通过Kettle的API实现调用,即需要融合Kettle。并且如果涉及到及时采集,除了融合问题,对采集的算法和性能也有很高
4、的要求。2、性能问题:由于Kettle只是一个很灵活的采集工具,实现同一个采集的方式可以有很多种,性能的瓶颈还是在采集算法上(后面还有一些提高性能的原则),所以为了更好的使用Kettle,需要整理一些常用的采集算法和采集模板。3、Kettle本身的问题:Kettle属于开源产品,该产品还在不断的完善中,虽然有一个比较详细的使用文档,但是并不是很详细,很多细节必须上论坛找或更多的只能通过看源代码并且写demo来测试验证。而且由于Kettle的实现是基于多线程的,存在一定的线程bug。Kettle介绍 目的目的 Kettle介绍介绍 总体介绍总体介绍 概念定义概念定义 Kettle实战实战 使用原
5、则使用原则KETTLE介绍 Kettle家族目前包括4个产品:Spoon、Pan、CHEF、Kitchen。 SPOON 允许你通过图形界面来设计ETL转换过程(Transformation)。例如,从EOMS系统抽取信息,并把这些信息存储到一个文本文件里的转换任务如下:KETTLE介绍KETTLE介绍 PAN 允许你批量运行由Spoon设计的ETL转换 (例如使用一个时间调度器)。Pan是一个后台执行的程序,没有图形界面。 CHEF 允许你创建任务(Job)。 任务通过允许每个转换,任务,脚本等等,更有利于自动化更新数据仓库的复杂工作。任务通过允许每个转换,任务,脚本等等。任务将会被检查,看
6、看是否正确地运行了。(下面是一个Chef的任务图) KITCHEN 允许你批量运行用允许你批量运行用Chef设计的设计的jobs。(例如用。(例如用scheduler) KITCHEN 允许你批量使用由Chef设计的任务 (例如使用一个时间调度器)。KITCHEN也是一个后台运行的程序。Kettle介绍 目的目的 Kettle介绍介绍 总体介绍总体介绍 家族介绍家族介绍 Kettle实战实战 使用原则使用原则概念介绍 本节介绍本节介绍Kettle中的两个重要的定义:中的两个重要的定义: Transformation (转换)(转换) 和和 Job(工作),用(工作),用Kettle可以话可以话
7、Transformation 图和图和Job图。图。 Job与Transformation的差别是:Transformation专注于数据的ETL,而Job的范围比较广,可以是Transformation,也可以是Mail、SQL、Shell、FTP等等,甚至可以是另外一个Job。Transformation(转换)定义(转换)定义 如右图,如右图,Transformation主要是由主要是由Step 和和Hop组成。组成。 Transformation主要包括几个主要包括几个 原型概念:原型概念:Step、Hop、 InputStream、OutputStream、 Row、Value。下面
8、给出定义。下面给出定义Step(步骤)如右图的“Table Input”,每个Step就是一个元操作。Hop(跳跃线)连接Step的线,代表了数据的流向。InputStream(输入流)输入Step的数据流OutputStream(输出流)从Step输出的数据流Row(记录行)InputStream中存在多个Row,Row存在多个Value。Value(值)值,带类型的值,例如String类型的值。概念介绍Job(工作)定义(工作)定义 Job Entry(工作实体)执行具体的任务(例如调用转换) Hop连接Job Entry的线。可以指定是否有条件的执行。例如,根据前一个Job Entry
9、执行的结果,判断是否执行这条Hop指向的下一个Job Entry 。 Kettle实战实战 目的目的 Kettle介绍介绍 Kettle实战实战 检查、调试、运行检查、调试、运行 日志日志 采集采集demo 使用原则使用原则常用常用Step介绍介绍生成字段和空操作 生成记录功能:用于生成数据行用途:一般用来模拟数据测试用。 空操作 功能:什么都不做。 用途:1、汇总数据集(待汇总的数据集必须 结构(字段)一致)2、调试时作为展现数据的节点常用常用Step介绍介绍Table Input和Table Outputa1表字段名:a,bA2表字段名:a,c在这个demo中可以看出两点:1、数据流(输入
10、/出流)中的数据字段名与生成该数据流的Step自动获取。2、表输出是按照数据流的数据自动匹配并且插入到输出表中的。常用常用Step介绍介绍 字段选择用于筛选数据流中的字段。常用常用Step介绍介绍获取系统信息 可以通过获取系统信息获取系统的一些信息,以及获取调用转换时传入的参数。常用常用Step介绍介绍Merge Join MergeJoin Step做的连接运算是在内存中运行的。它有一个特殊要求:要求做集合的连接key必须已经按相同方式排好序了(无论是用Sql的orderby还是用KETTLE提供的排序记录Step),要不然会出现不可预知的错误,例如右图。常用常用Step介绍介绍修改后的图K
11、ettle实战实战 目的目的 Kettle介绍介绍 Kettle实战实战 常用常用Step介绍介绍运行运行 日志日志 采集采集demo 使用原则使用原则检查、调试、运行右图红框标出的工具栏 运行 预览 调试 检查检查、调试、运行 检查 检查功能检查出图中的应用级错误(不能检查出逻辑错误)。点击 检查按钮后弹出下图:红色的为错误,必须解决。黄色的为警告,可能会引起错误,不一定需要解决。检查、调试、运行 预览 能够看到执行完该步骤后的输出数据(有的可能看不到,例如,需要参数传入的执行步骤)。一般在个别步骤中也有预览按钮。检查、调试、运行 调试 调试转换,可以输入参数和设置要观测的步骤。从中可以看到
12、每个步骤的输出结果。检查、调试、运行 运行 运行后可以看到一下结果。对部分参数解释一下:读:从输入流读取的记录数。写:输出到输出流的记录数。输入:从数据库读取的记录数。输出:输出到数据库的记录数。错误:执行时错误数。激活:Step执行的状态。时间:执行该步骤的时间。速度:该Step处理每行记录用的时间。Pri/in/out:显示因为该Step的输入缓存为空,或者输出缓存已满而等待进入休眠的时间。Kettle实战实战 目的目的 Kettle介绍介绍 Kettle实战实战 常用常用Step介绍介绍 检查、调试、运行检查、调试、运行 采集采集demo 使用原则使用原则日志 在Kettle的日志机制中
13、存储方式分两类,一类是存储在文本日志里,一类是存储在数据库里。本节暂时只介绍记录在日志里的情况。日志日志级别:日志级别:可以点击可以点击 记录配置日志级别。记录配置日志级别。Nothing不显示任何输出。Error只显示Error。Minimal只记录必要日志。Basic默认日志级别。Detailed输出对话级别的日志。Debug输出调试级别的日志。Row level每一行的操作都会记录日志。Kettle实战实战 目的目的 Kettle介绍介绍 Kettle实战实战 常用常用Step介绍介绍 检查、调试、运行检查、调试、运行 日志日志 使用原则使用原则采集demo 采集demo1和采集demo
14、2说明 两个demo实现的业务是一样的,区别是demo2多用了几个step去实现连接功能。意在说明两点:1、如果一条sql实现不了的,可以通过Kettle提供的step实现。2、Kettle很灵活,所以从性能上考虑,对开发人员的要求也是挺高的,下面一节会给出一些原则。采集demo 采集demo1采集demo 采集demo2使用原则 目的目的 Kettle介绍介绍 Kettle实战实战 使用原则使用原则使用原则使用原则 尽量使用数据库连接池 尽量提高批处理的commit size 尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流) Kettle 是Java 做的,尽量用大一点的内存参数启动K
15、ettle. 可以使用sql 来做的一些操作尽量用sql Group , merge , stream lookup ,split field 这些操作都是比较慢的,想办法避免他们.,能用sql 就用sql 插入大量数据的时候尽量把索引删掉 尽量避免使用update , delete 操作,尤其是update , 如果可以把update 变成先delete , 后insert .使用原则使用原则能使用truncate table 的时候,就不要使用delete all row 这种类似sql合理的分区如果删除操作是基于某一个分区的,就不要使用delete row 这种方式(不管是delete
16、sql 还是delete 步骤),直接把分区drop 掉,再重新创建尽量缩小输入的数据集的大小(增量更新也是为了这个目的)尽量使用数据库原生的方式装载文本文件(Oracle 的sqlloader , mysql 的bulk loader 步骤)尽量不要用kettle 的calculate 计算步骤,能用数据库本身的sql 就用sql ,不能用sql 就尽量想办法用procedure , 实在不行才是calculate 步骤.要知道你的性能瓶颈在哪,可能有时候你使用了不恰当的方式,导致整个操作都变慢,观察kettle log 生成的方式来了解你的ETL操作最慢的地方。远程数据库用文件+FTP 的方式来传数据 ,文件要压缩。(只要不是局域网都可以认为是远程连接)演讲完毕,谢谢观看!