• 1. Kettle 基础培训整理:小白、玻璃杯www.ukettle.org
  • 2. AgendaKettle特点 Kettle基础知识 Kettle开发流程 Kettle组件介绍 案例介绍
  • 3. 什么是KettleKettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。 Kettle 中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,然后以一种指定的格式流出。
  • 4. 相关知识链接kettle的官网是 http://community.pentaho.com/projects/data-integration/ 目前常用的版本有5.3,5.2 5.1以及4.4,4.3等,不推荐再以前的版本,已经过于陈旧。 开发、使用者如何选择版本呢? 5.0以后的版本加入了不少新的控件,也对已有功能做了一定优化,根据群内统计来看目前使用4.4版的较多,5.1、5.2也有不少人用,5.3版根据某群友未经证实的经验还有一定问题。
  • 5. Kettle特点—kettle与Infomatica比较总结: kettle配置简单,抽取效率比较高,可以进行第三方修改,工具中的控件能够实现数据抽取的大部分需求。  KettleInformatica易用性有非常容易使用的 GUI,出现问题可以到社区咨询。非常容易使用的 GUI,但是要专门的训练。部署需要JVM。需要有 Server效率需要手工调整,对 Oracle 和 PostGre 等数据源做了优化,同时也取决于转换任务的设计。最快的  数据质量在 GUI 里有数据质量特性,可以手工写 SQL 语句、java脚本、正则表达式来完成数据清洗。专门有一个产品 Informatica Data Quality 来保证数据质量  监控有监控和日志工具有非常详细的监控和日志工具,实际应用中无需如此详细日志  连接性非常广泛的数据库,文件,另外可以通过插件扩展。各种数据源
  • 6. Kettle基础知识—kettle家族Kettle家族目前包括几个产品: Spoon—转换(transform)设计工具 (GUI方式) Pan—转换(transform)执行器 (命令行方式) Kitchen—工作(job)执行器 (命令行方式) Carte —基于Jetty的,监听Http请求 Encr —用户加密密码
  • 7. Kettle基础知识—kettle家族Spoon允许你通过图形界面来设计ETL转换过程(Transformation)和作业(Job)。例如,从一个SAP系统抽取数据,并把这些数据存储到一个文件里。 Pan允许批量运行由Spoon设计的ETL转换(例如使用时间调度器)。 Pan是一个后台执行的程序,没有图形界面。 Kitchen允许批量使用由Chef设计的任务(例如使用一个时间调度器)。KITCHEN是一个后台运行程序。 Job和Transformation的差别:Transformation专注于数据的ETL,而Job的范围比较广,可以是Transformation,也可以是Mail、SQL、Shell、FTP等,甚至可以是另外一个Job。
  • 8. Kettle基础知识—kettle的安装要运行此工具你必须安装Sun 公司的JAVA 运行环境1.4 或者更高版本。 绿色免安装,解压即可用。 在不同的平台上运行Spoon 所支持的脚本: Spoon.bat: 在windows 平台运行Spoon。 Spoon.sh: 在Linux、Apple OSX、Solaris 平台运行Spoon。
  • 9. Kettle开发流程双击运行 kettle 目录下的spoon.bat,出现 kettle 欢迎界面。 创建资料库(可省略)。 创建数据库连接。 创建转换。 创建Jobs,进行流程化控制。
  • 10. Kettle控件介绍 从关系型数据库中获取源数据。 用于数据持久化,将数据加载到关系型数据库中。 从文本文件中获取源数据。 将数据写入文本文件中,如果路径下无此文件,kettle会 自动建立。
  • 11. Kettle控件介绍 从MongoDB中获取源数据。 用于数据持久化,将数据加载到MongoDB中。 均用于从XML文件获取数据,只是解析方式不 同,一般情况下均采用第二个控件。 将数据写入XML文件中,如果路径下无此文件,kettle会自动建立。
  • 12. Kettle组件介绍 删除指定表匹配条件的数据操作。 更新指定表指定条件的数据 数据网格,能够创建指定格式的网格数据。 获取系统信息,包括系统中的时间、日期、JOB转换信息 能够读取json格式数据,输出成标准流字段 获得一个随机值
  • 13. Kettle组件介绍 增加常量,可以选择常量的数据类型 增加序列,可指定步长 计算器,可以做数据加减乘除和日期处理(有小bug) 拼接数据,可指定分隔符 替换字段中的指定字符 字段选择,移除以及格式化
  • 14. Kettle组件介绍 列转行 行转列,先group by再进行转换 将一个字段的值赋值给另一个字段 拆分字段成行,根据指定分隔符将一行数据拆分成多行 拆分字段,将一个字段拆分成多个字段 字符串处理,其中包括trim、大小写转换、特殊字符转换 比如换行符、制表符等
  • 15. Kettle组件介绍 字符串剪切,可以指定从第几个字符开始、结束 去重,可根据某个字段进行去重 值映射,如cd值可以映射成:成都 如果字段为空,则赋予什么值。如ID为空则补零 发送邮件,此step对代码监控有重大意义 将流中的指定字段数据值打印到日志中
  • 16. Kettle组件介绍 筛选字段中的满足条件的数据流 执行SQL脚本(PS:在转换中最先执行) 执行JS脚本 执行正则表达式 调用存储过程 检查字段是否存在
  • 17. Kettle组件介绍 数据库连接,用户异构数据库关联限制条件查询,注意索引 数据库查询,跟数据库连接接近,只是不可以限制条件 从HTTP接口中获取数据 从web services 接口中获取数据(有bug) 关联数据库,注意使用之前要对关联字段进行排序 维度查询更新,多用于实现缓慢变化维
  • 18. Kettle组件介绍 字段检查,如设定单笔订单金额不能超过10W等 取前一条数据或者后一条数据,一般用于环比、同比 分组,group by需要SORT,memory不需要 从Hbase中查询数据 获取配置文件中参数或者数据流中的参数,赋值给字段 将字段设置成变量
  • 19. 案例介绍(1) 目标:将源数据进行清洗后输出至文本文件。 1、表输入控件A,抽取订单信息; 2、B的转换,对抽取出的数据进行轻度清洗; 3、清洗之后的脏数据放到F的error文件中,其中E为字段合并控件,即Contact; 有效数据放到D中的文本中,提供给后面的转换使用。
  • 20. 案例介绍(2) 目标:将系统时间格式化为目标格式日期 1、获取系统时间信息(控件A); 2、获取配置文件参数(控件B); 3、再使用JS控件(控件C),加工获取的时间日期信息,主要使用JS语言(kettle也封装了一些js函数); 4、将得到的日期,格式化为目标信息(控件D); 5、将最终结果用参数设置(控件E),设置为虚拟机级别的参数,提供给后面的Trans、Job使用。