ETL简介
ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过萃取(extract)、转置(transform)、加载(load)至目的端的过程。
ETL是数据抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)的过程。是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
目前,ETL工具的典型代表有:Informatica、Datastage、OWB、微软DTS、Beeload、Kettle……
开源的工具有eclipse的etl插件:cloveretl。
ETL产品的选型,需要从四点(即成本、人员经验、案例和技术支持) 来考量。
ETL的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性。
实现ETL,首先要实现ETL转换的过程。它可以集中地体现为以下几个方面:
1、空值处理:可捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库。
2、规范化数据格式:可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式。
3、拆分数据:依据业务需求对字段可进行分解。例,主叫号 861082585313-8148,可进行区域码和电话号码分解。
4、验证数据正确性:可利用Lookup及拆分功能进行数据验证。例如,主叫号861082585313-8148,进行区域码和电话号码分解后,可利用Lookup返回主叫网关或交换机记载的主叫地区,进行数据验证。
5、数据替换:对于因业务因素,可实现无效数据、缺失数据的替换。
6、Lookup:查获丢失数据 Lookup实现子查询,并返回用其他手段获取的缺失字段,保证字段完整性。
7、建立ETL过程的主外键约束:对无依赖性的非法数据,可替换或导出到错误数据文件中,保证主键唯一记录的加载。
基于Storm的ETL设计
-
通用ETL功能设计
1、通用的Spout来处理各类抽取:数据库、消息系统、csv文件、RESTful服务等;
2、通用的Bolt来处理各类校验:空值、超长、过短、数据类型、正则表达式、关联校验(关联数据是否存在/不存在?是否在指定范围内?)等,支持校验后的数据替换处理;
3、通用的Bolt来处理各类数据拆分与合并:字符串处理(拆分、合并)、数学运算处理、日期时间处理、集合数据处理(计数、平均、求和、分组、排序等);
4、通用的Bolt来处理各类数据装载:数据库、消息系统、csv文件、RESTful服务;
-
辅助功能设计
1、数据统计功能
2、状态跟踪功能
3、拓扑管理功能
4、拓扑设计功能
ETL平台设计
1 设计目标:
1.1 数据的实时处理和推送
1) 实时获取数据,
2) 支持多种格式数据
(JSON、DB、POJO、XML)
3) 内部统一数据结构(KV)
4) 能够实现对数据的校验:
空或非空、数据类型、长度、数据格式、关联校验(数据库、缓存字典数据,加载字典和数据文件)
5) 能够对校验不通过的原因进行记录
6) 能够对数据进行实时处理
处理规则包括:数据类型转换、字符分和合并、日期时间格式转换、四则运算)
7) 能够对处理后的数据进行输出
输出(DB、MQ)
8) 能够对平台抽取和处理的数据进行统计
(抽取数据数,成功处理数,失败处理数,失败原因分类统计,抽取及处理的平均时长、最大时长、最短时长)
9) 能够按照规则对校验失败的数据进行自动更正,并记录日志
(定值更正、数据类型更正、长度更正)
1.2 容易使用,操作简单
基于配置、配置工具(未来),监控工具
组件+javadoc+开发文档+手册
1.3 能够支撑大数据,高并发的请求
(集群技术,流式计算技术)
1.4 高可用
zookeper集群、strom集群、fast-fail、消息系统
2 约束:
为保证平台计算的实时性,平台不考虑数据存储,仅以MQ式来支持HBase的设计
类图设计记录:
Use Case Model 下的 处理流图;
Class Model 下的:
01 PackageModel 、02 JmsSpoutAndJmsBlot、03 DataStructureTrans 、
04 ValidateBlot 、05 CorrectBlotAndDataTransBlot