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

对Storm ETL的初步思考的更多相关文章

  1. Linux ext2文件系统之初步思考

    数据存放在磁盘中,磁盘最小存取单位sector(512Byte);文件系统中存储的最小单位是 块(Block),大小通常(1KB,2KB,4KB...), 一个block对应多个sector,因而可用 ...

  2. Storm:最火的流式处理框架

    伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样.更加便捷,同时对于信息的时效性要求也越来越高.举个搜索场景中的例子,当一个卖家发布了一条宝贝信息时,他希望的当然是这 ...

  3. [转载] Storm:最火的流式处理框架

    转载自http://www.cnblogs.com/langtianya/p/5199529.html 伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样.更加便捷,同 ...

  4. Storm实时计算系统

    来自知乎: 伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样.更加便捷,同时对于信息的时效性要求也越来越高.举个搜索场景中的例子,当一个卖家发布了一条宝贝信息时,他希 ...

  5. Android布局尺寸思考

    一.初步思考 虽然安卓的这个显示适配的方案有点怪,最初也不容易马上理解,不过这个方案确实有其自己的道理,整个思路是清晰的,方案的也是完整的,没有硬伤 安卓采用的[屏幕密度放缩机制].与web前端对应的 ...

  6. 大规模定制模式之于MES的三点思考

    大规模定制(Mass Custermization) ,其目标是大规模生产定制化产品,并且在效率.质量(一致性)等指标方面与大规模批量生产等齐. 这是一种理想或者追求,其提出的背景是目前越发普遍的多品 ...

  7. 【2】构建一个SSM项目结构

    初步思考一下这个项目的结构,由于是给一个比较老的公司做这个外包项目,服务器是搭建在windows操作系统上的Tomcat6.0,系统的JDK版本也是JDK1.6,都是比较旧. 数据库方面有专人负责,所 ...

  8. 「关于一种处理关于$p$成多项式的数论函数筛法」

    张博航原知乎网址 张博航原博客网址 引入: 给一个完全积性函数$f$,求其前缀和 $$S(n)=\sum_{i=1}^nf(i)$$ 初步思考: 考虑由于所求函数为完全积性函数,我们很容易用一个线性筛 ...

  9. [Oracle维护工程师手记]一次升级后运行变慢的分析

    客户报告,当他从 Oracle 11.1.0.7 ,迁移到云环境,并且升级到12.1.0.2.运行客户的应用程序测试,发现比以前更慢了. 从AWR report 的"Top 10 Foreg ...

随机推荐

  1. Request对象与Response对象

    1.Request对象 Request对象是来获取请求消息的,是由服务器(Tomcat)创建的. Request对象继承体系结构: ServletRequest        --    接口     ...

  2. Hive分组取第一条记录

    需求 交易系统,财务要求维护每个用户首个交易完成的订单数据(首单表,可取每个用户交易完成时间最老的订单数据).举例: 简写版的表结构: 表数据: 则 财务希望汇总记录如下: uid order_id ...

  3. 四十六 常用内建模块 itertools

    Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. 首先,我们看看itertools提供的几个“无限”迭代器: >>> import itertools ...

  4. Linux让程序后台运行命令之screen与nohup

    一.nohup nohup时间长了会断掉  所以建议使用screen nohup 命令 & 如果运行成功刚默认会将标准输出重定向到当前目录的nohup.out文件中,查看此文件,可以了解运行的 ...

  5. summernote富文本编辑器配合validate表单验证无法进行表单提交的问题

    1.使用summernote富文本编辑器提交图片到服务器 在使用bootstrap中,我们用到了summernote富文本编辑器,使用summernote将图片上传到服务器中,参考我的上篇文章http ...

  6. CodeForces 731D 80-th Level Archeology

    区间并. 对于上下两个数字,如果不一样,那么可以计算出哪一段范围内可以保证字典序,并且后面所有位置都无需再考虑.对所有范围求交集就是答案了. 求交集写起来有点烦,直接对不可取的范围求并即可. #pra ...

  7. 对StackOverflow上投票最高的带javascript标签的问题的汇总

    https://github.com/simongong/js-stackoverflow-highest-votes

  8. 动若脱兔:深入浅出angr--初步理解符号执行以及angr架构

    一:概论 angr作为符号执行的工具,集成了过去的许多分析方式,它不仅能进行动态符号执行,而且还能进行很多静态分析,他在分析二进制程序中能发挥很大的作用,下面为一些应用: 1:利用符号执行探究执行路径 ...

  9. ubuntu的boot分区报警,删除无用内核文件。

    1. 查看当前使用内核:uname -r4.4.0-97-generic 2. 查看安装的内核dpkg --list 'linux-image*' 3. 删除旧内核sudo apt-get remov ...

  10. 从Linux下载文件到Windows没有换行问题

    这是一个小问题,一般用txt打开文件才会遇到,word打开也是正常(估计其他编程软件打开也正常). 顺便提一下pscp从Linux上下载文件到Windows. C:\Users\xuefei>p ...