目录
ETL概念之介绍
ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL 一词较常用在数据仓库,但其对象并不限于数据仓库。ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。ETL过程本质上是数据流动的过程,从不同的数据源流向不同的目标数据。
ETL在数据仓库中的几个特点:
数据同步,它不是一次性倒完数据就拉到,它是经常性的活动,按照固定周期运行的,甚至现在还有人提出了实时ETL的概念。
数据量,一般都是巨大的,值得你将数据流动的过程拆分成E、T和L。
根据E、T、L三个步骤的实现环境,目前有ETL和ELT两种架构。
ETL概念之背景
随着企业的发展,目前的业务线越来越复杂,各个业务系统独立运营。
例如:CRM系统只会生产CRM的 数据;Billing只会生产Billing的数据。各业务系统之间只关心自己的数据,导致各业务系统之间数据相互独立,互不相通。一旦业务系统之间进行数据交互,只能通过传统的webservice接口之间进行数据通信。该种方式对人力成本、时间成本要求比较高。而ETL的诞生就解决了此类问题,企业不需要技术很好、很成熟的开发人员一样可以完成该任务。
ETL概念之工作流程
ETL工作流程:先抽取、然后加载到目标数据库中、在目标数据库中完成转换操作。
ETL是将业务系统的数据经过抽取(Extract)、清洗转换(Transform)之后加载(Load)到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。ETL 有两种形式:实时流 ETL 和 离线 ETL。
实时流 ETL 工作流程
如下图所示,实时流 ETL 通常有两种形式:一种是通过 Flume 采集服务端日志,再通过 HDFS 直接落地;另一种是先把数据采集到 Kafka,再通过 Storm 或 Spark streaming 落地 HDFS,实时流 ETL 在出现故障的时候很难进行回放恢复。图中仅使用实时流 ETL 进行数据注入和清洗的工作。
graph LR 1[Flume] --> 2[HDFS]--> 3[Hive] 4[kafka] --> 5[storm]--> 6[HDFS]--> 7[Hive]根据 Lambda 结构,如果实时流 ETL 出现故障需要离线 ETL 进行修补。
离线 ETL 工作流程
上图是离线 ETL 的基本工作流程:
1.kafka-etl 将业务数据清洗过程中的公共配置信息抽象成一个 etl schema ,代表各个业务不同的数据;
2.在 kafka-etl 启动时会从 zookeeper 拉取本次要处理的业务数据 topic&schema 信息;
3.kafka-etl 将每个业务数据按 topic、partition 获取的本次要消费的 offset 数据(beginOffset、endOffset),并持久化 mysql;
4.kafka-etl 将本次需要处理的 topic&partition 的 offset 信息抽象成 kafkaEvent,然后将这些 kafkaEvent 按照一定策略分片,即每个 mapper 处理一部分 kafkaEvent;
5.RecordReader 会消费这些 offset 信息,解析 decode 成一个个 key-value 数据,传给下游清洗处理;
6.清洗后的 key-value 统一通过 RecordWriter 数据落地 HDFS。
ETL概念之操作步骤
ETL处理分为五大模块,分别是:数据抽取、数据清洗、库内转换、规则检查、数据加载。各模块可灵活进行组合,形成ETL处理流程。
数据抽取
确定数据源,需要确定从哪些源系统进行数据抽取;
定义数据接口,对每个源文件及系统的每个字段进行详细说明;
确定数据抽取的方法:是主动抽取还是由源系统推送?是增量抽取还是全量抽取?是按照每日抽取还是按照每月抽取?
数据清洗与转换 数据清洗 主要将不完整数据、错误数据、重复数据进行处理
数据转换:
空值处理:可捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库
数据标准:统一元数据、统一标准字段、统一字段类型定义.可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式。
数据拆分:依据业务需求做数据拆分,如身份证号,拆分区划、出生日期、性别等.例,主叫号 861082585313-8148,可进行区域码和电话号码分解。
数据验证:时间规则、业务规则、自定义规则.可利用Lookup及拆分功能进行数据验证。例如,主叫号861082585313-8148,进行区域码和电话号码分解后,可利用Lookup返回主叫网关或交换机记载的主叫地区,进行数据验证
数据替换:对于因业务因素,可实现无效数据、缺失数据的替换
数据关联:关联其他数据或数学,保障数据完整性 数据加载 将数据缓冲区的数据直接加载到数据库对应表中,如果是全量方式则采用LOAD方式,如果是增量则根据业务规则MERGE进数据库
Lookup:查获丢失数据 Lookup实现子查询,并返回用其他手段获取的缺失字段,保证字段完整性。
建立ETL过程的主外键约束:对无依赖性的非法数据,可替换或导出到错误数据文件中,保证主键唯一记录的加载。
参考链接
https://blog.csdn.net/javastart/article/details/113838240
标签:抽取,操作步骤,流程,数据仓库,数据,ETL,加载 From: https://www.cnblogs.com/xieshier/p/17123434.html