首页 > 其他分享 >ETL概念、工作流程以及操作步骤

ETL概念、工作流程以及操作步骤

时间:2023-02-15 16:33:25浏览次数:49  
标签:抽取 操作步骤 流程 数据仓库 数据 ETL 加载

目录

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实践 - 掘金 (juejin.cn)

标签:抽取,操作步骤,流程,数据仓库,数据,ETL,加载
From: https://www.cnblogs.com/xieshier/p/17123434.html

相关文章

  • 经纬恒润三位一体“安全”流程方案,助力智能网联汽车产品量产落地
        “安全”被普遍认为是智能网联汽车被用户接受或者得到商业应用最大的问题。2022年11月2日,工业和信息化部会同公安部组织起草了《关于开展智能网联汽车准入和上......
  • 【Shell】流程控制
    目录流程控制:ifelse语句if条件判断句的退出状态Shell内置命令:test流程控制:ifelse语句if条件判断句的退出状态Shell内置命令:test......
  • .NET6 API 部署标准流程
    一、安装dotnet环境#第一步:将Microsoft包签名密钥添加到受信任密钥列表,并添加Microsoft包存储库sudorpm-Uvhhttps://packages.microsoft.com/config/centos/7/packa......
  • dinky-binlog-kafka-flinksql流程处理
    准确阶段:mysql:开启mysql日志kafka:需检查服务是否正常maxwell:这里采用19版本,过新的版本对java版本要求高,我这里是java8maxwell-1.19.0maxwell操作:cd/root/tar_temp/maxwell-......
  • WHQL认证多少钱?微软WHQL认证流程
    WHQL认证多少钱是很多驱动程序开发者关心的。虽然WHQL认证微软不收取费用,但是认证过程中,需要搭建多种类型的系统环境完成兼容性测试,需要按微软要求完成微软WHQL认证流程,这对......
  • jwt配置文件 drf-jwt源码执行流程 自定义用户实现jwt的签发和认证 simpleui 权限控制(
    昨日内容回顾#1接口文档的编写-1word,md编写---->存放位置:存放共享文件平台,git上-2第三方的接口文档编写平台-3公司自己开发,使用开源搭建yapi......
  • char *setlocale(int category, const char *locale)
    category --这是一个已命名的常量,指定了受区域设置影响的函数类别。LC_ALL 包括下面的所有选项。LC_COLLATE 字符串比较。参见strcoll()。LC_CTYPE 字符分类和......
  • 优惠券流程
    小程序优惠券流程优惠券流程大致如下:优惠券发放形式优惠券一般通过领取的形式发放,也可以通过用户的状态来自动发放优惠券。自动发放的优惠券适用于一些活动,比如:回归......
  • 最好用的画流程图的软件
    来分享一下画流程图的软件ProcessOn,它是一款在线的软件,只需要打开浏览器就可以作图,无需下载,超级方便操作,而且免费使用。https://www.processon.com/i/5f5a11821e085317......
  • Web开发的那点事--开发流程
    第0步:可行性分析拿到项目,项目是否可行。产品技术可行性/法律/第1步:需求分析收集和整理需求,知道项目要做什么。可能的产物:需求分析文档、功能点文档、性能分析第2步:制作......