ETL
Extraction-Transformation-Loading的缩写,中文名称为数据提取、转换和加载。 ETL工具有:
OWB(Oracle Warehouse Builder)、ODI(Oracle Data Integrator)、Informatic PowerCenter、Trinity、AICloudETL、DataStage、Repository Explorer、Beeload、Kettle、DataSpider
目前,ETL工具的典型代表有:Informatica、Datastage、OWB、微软DTS、Beeload、Kettle……
开源的工具有eclipse的etl插件。cloveretl.
数据集成:快速实现ETL
ETL的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性。而影响质量问题的原因有很多,由系统集成和历史数据造成的原因主要包括:业务系统不同时期系统之间数据模型不一致;业务系统不同时期业务过程有变化;旧系统模块在运营、人事、财务、办公系统等相关信息的不一致;遗留系统和新业务、管理系统数据集成不完备带来的不一致性。
实现ETL,首先要实现ETL转换的过程。它可以集中地体现为以下几个方面:
- 空值处理:可捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库。
- 规范化数据格式:可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式。
- 拆分数据:依据业务需求对字段可进行分解。例,主叫号 861082585313-8148,可进行区域码和电话号码分解。
- 验证数据正确性:可利用Lookup及拆分功能进行数据验证。例如,主叫号861082585313-8148,进行区域码和电话号码分解后,可利用Lookup返回主叫网关或交换机记载的主叫地区,进行数据验证。
- 数据替换:对于因业务因素,可实现无效数据、缺失数据的替换。
- Lookup:查获丢失数据 Lookup实现子查询,并返回用其他手段获取的缺失字段,保证字段完整性。
- 建立ETL过程的主外键约束:对无依赖性的非法数据,可替换或导出到错误数据文件中,保证主键唯一记录的加载。
起源
Kettle是一个Java编写的ETL工具,主作者是Matt Casters,2003年就开始了这个项目,最新稳定版为7.1。
2005年12月,Kettle从2.1版本开始进入了开源领域,一直到4.1版本遵守LGPL协议,从4.2版本开始遵守Apache Licence 2.0协议。
Kettle在2006年初加入了开源的BI公司Pentaho, 正式命名为:Pentaho Data Integeration,简称“PDI”。
自2017年9月20日
起,Pentaho已经被合并于日立集团下的新公司: Hitachi Vantara。
总之,Kettle可以简化数据仓库的创建,更新和维护,使用Kettle可以构建一套开源的ETL解决方案。
架构
Kettle是一个组件化的集成系统,包括如下几个主要部分:
1.Spoon:图形化界面工具(GUI方式),Spoon允许你通过图形界面来设计Job和Transformation,可以保存为文件或者保存在数据库中。
也可以直接在Spoon图形化界面中运行Job和Transformation,
2.Pan:Transformation执行器(命令行方式),Pan用于在终端执行Transformation,没有图形界面。
3.Kitchen:Job执行器(命令行方式),Kitchen用于在终端执行Job,没有图形界面。
4.Carte:嵌入式Web服务,用于远程执行Job或Transformation,Kettle通过Carte建立集群。
5.Encr:Kettle用于字符串加密的命令行工具,如:对在Job或Transformation中定义的数据库连接参数进行加密。
基本概念
1.Transformation:定义对数据操作的容器,数据操作就是数据从输入到输出的一个过程,可以理解为比Job粒度更小一级的容器,我们将任务分解成Job,然后需要将Job分解成一个或多个Transformation,每个Transformation只完成一部分工作。
2.Step:是Transformation内部的最小单元,每一个Step完成一个特定的功能。
3.Job:负责将Transformation组织在一起进而完成某一工作,通常我们需要把一个大的任务分解成几个逻辑上隔离的Job,当这几个Job都完成了,也就说明这项任务完成了。
4.Job Entry:Job Entry是Job内部的执行单元,每一个Job Entry用于实现特定的功能,如:验证表是否存在,发送邮件等。可以通过Job来执行另一个Job或者Transformation,也就是说Transformation和Job都可以作为Job Entry。
5.Hop:用于在Transformation中连接Step,或者在Job中连接Job Entry,是一个数据流的图形化表示。
在Kettle中Job中的JobEntry是串行执行的,故Job中必须有一个Start的JobEntry;Transformation中的Step是并行执行的。
组件对比
目前,ETL工具的典型代表有:
纯java编写,可以跨平台运行,绿色无需安装,数据抽取高效稳定。
相对于传统的商业软件,Kettle是一个易于使用的,低成本的解决方案。
Spoon是基于SWT(SWT使用了本地操作系统的组件库,性能更好,界面更符合本地操作系统的风格)开发的,支持多平台:
Microsoft Windows: all platforms since Windows 95, including Vista
Linux GTK: on i386 and x86_64 processors, works best on Gnome
Apple's OSX: works both on PowerPC and Intel machines
Solaris: using a Motif interface (GTK optional)
AIX: using a Motif interface
HP-UX: using a Motif interface (GTK optional)
FreeBSD: preliminary support on i386, not yet on x86_64
Kettle使用场景
Migrating data between applications or databases 在应用程序或数据库之间进行数据迁移
Exporting data from databases to flat files 从数据库导出数据到文件
Loading data massively into databases 导入大规模数据到数据库
Data cleansing 数据清洗
Integrating applications 集成应用程序
还可以在这里了解详细
7.1 版本之后的资源库链接换了地方了
以前 在工具 –> 资源库新建 –> 可以新建资源库 图上我是有链接后的没有链接的那里是一个按钮 connect
一、Kettle资源库概述
1、kettle资源库保存的是Kettle元数据。
2、资源库包括文件资源库、数据库资源库。在服务端新建资源库,只能使用数据库资源库。
3、不使用资源库:直接保存为ktr或kjb文件。
二、如何选择资源库
(一)数据库资源库的缺点
1、不能存储转换或作业的多个版本。
2、严重依赖于数据库的锁机制来防止工作丢失。
3、 没有考虑到团队开发,开发人员不能锁住自己开发的某个作业。
(二)文件资源库的缺点
1、对象(如转换、作业、数据库连接等对象)之间的关联关系难以处理,所以删除、重命名等操作会比较麻烦。
2、没有版本历史。
3、难以进行团队开发。
不使用资源库:使用svn进行文件版本控制。
三、管理资源库
1、ETL开发的几个阶段:开发、测试、确认、发布。
2、各阶段对应的资源库:开发资源库、测试(确认)资源库、发布资源库。
3、各阶段推进:
(1)从开发资源库到测试资源库:注意命名规则。由一个人统一发布,避免冲突。
两种移植方法:断开重连、导出/导入。
(2)从测试(确认)资源库到发布资源库: 导出/导入
不使用资源库SVN版本控制,测试打tag(标签),发布建branch(分支)。
四、资源库参数化
(一)为什么要参数化。
在资源库之间移植作业时,因为各个阶段的环境不一样,在作业里使用的数据库连接等元数据不能硬编码。
(二)参数化的方法
1、kettle.properties,文件位于java的user.home目录下。
2、自定义properties文件,通过属性文件输入步骤读取。
地址详见 https://blog.csdn.net/Q1059081877Q/article/details/80526593
最新8.1 的下载在 https://jaist.dl.sourceforge.net/project/pentaho/Pentaho%208.1/client-tools/pdi-ce-8.1.0.0-365.zip
其他的直接在官网可以直接下载 不过文件比价大 下载比较慢。
kettle 要求jdk 1.7 以上。你的环境变量要设置好 。不过对于java 的我们这些小case了
下载完以后 解压 pdi-ce-8.1.0.0-365.zip
进入D:\xueqyImportant\pdi-ce-8.1.0.0-365\data-integration
运行 spoon.bat 就可以了
在最开始我们要新建 资源库 一般我们在选择资源库种类的我都是选择第一个 资源库可以存我们的数据库连接 job转换的的各个步骤等详细信息 如果没有资源库 数据库你就要每个转换都新建数据库连接这样很麻烦
资源库最原始的用户名密码是admin admin
可以自己在数据库加 他的 加密明文密码 可以自己设置 方法是 密码可以通过 https://blog.csdn.net/Q1059081877Q/article/details/80497817 设置
不过在你链接数据库的时候可能会报错 没有加相应的驱动文件 mysql的驱动jar包
kettle 集群开发
https://blog.csdn.net/u013434750/article/details/60958990