首页 > 其他分享 >ETL过程及常用工具

ETL过程及常用工具

时间:2024-10-12 10:12:48浏览次数:1  
标签:抽取 转换 数据 常用工具 数据源 过程 ETL MD5

ETL概念

  • 将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程
  • ETL负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成, 最后加载到数据仓库或数据集市中,成为联机分析处理、 数据挖掘的基础

数据抽取

全量抽取

  • 类似于数据迁移或数据复制,它将数据源中的表或视图的数据原封不动的从数据库中抽取出来,并转换成自己的ETL工具可以识别的格式

增量抽取

  • 只抽取自上次抽取以来数据库中要抽取的表中新增或修改的数据,如何捕获变化的数据是增量抽取的关键
  • 对捕获方法一般有两点要求:准确性,能够将业务系统中的变化数据按一定的频率准确地捕获到;性能, 不能对业务系统造成太大的压力,影响现有业务

常用的捕获方法

方法 说明 优点 缺点
触发器 在要抽取的表上建立需要的触发器,一般要建立插入、修改、删除三个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个临时表,抽取线程从临时表中抽取数据,临时表中抽取过的数据被标记或删除 利用数据库本身的触发器机制,契合度高,可靠性高,不会存在有增量数据未被捕获到的现象 对源系统有较大的影响,需要建立触发器机制,增加运维人员,还要建立临时表,储存临时表,增加储存成本和运维成本
时间戳 它是一种基于快照比较的变化数据捕获方式,在源表上增加一个时间戳字段,系统中更新修改表数据的时候,同时修改时间戳字段的值。当进行数据抽取时,通过比较系统时间与时间戳字段的值来决定抽取哪些数据 数据处理逻辑清楚,速度较快,成本低廉,流程简单 要求源表的时间字段必须是随表变动而变动的不为空数据,由于是直接读取表数据,该方法无法获取删除类型的数据
全表比对 典型的全表比对的方式是采用MD5校验码。ETL工具事先为要抽取的表建立一个结构类似的MD5临时表,该临时表记录源表主键以及根据所有字段的数据计算出来的MD5校验码。每次进行数据抽取时,对源表和MD5临时表进行MD5校验码的比对,从而决定源表中的数据是新增、修改还是删除,同时更新MD5校验码 对源系统的倾入性较小 MD5方式是被动的进行全表数据的比对,性能较差,当表中没有主键或唯一列且含有重复记录时,MD5方式的准确性较差
日志对比 通过分析数据库自身的日志来判断变化的数据,Oracle的改变数据捕获(CDC,Changed Data Capture)技术是这方面的代表,CDC体系结构基于发布者/订阅者模型,发布者捕捉变化数据并提供给订阅者,订阅者使用从发布者那里获得的变化数据,通常,CDC系统拥有一个发布者和多个订阅者 实时、高效、相对复杂、异步、非侵入式 环境配置复杂,需要占用数据库系统的一定资源,ETL规则复杂
  • ETL处理的数据源除了关系数据库外,还可能是txt文件、excel文件、xml文件等
  • 对文件数据的抽取一般是进行全量抽取,一次抽取前可保存文件的时间戳或计算文件的MD5校验码,下次抽取时进行比对,如果相同则可忽略本次抽取

数据转换与处理

  • 从数据源中抽取的数据不一定完全满足目的库的要求,例如数据格式的不一致、数据输入错误、数据不完整等,因此有必要对抽取出的数据进行数据转换和处理
  • 数据转换和处理可以在ETL引擎中进行,也可以在数据抽取过程中利用关系数据库的特性同时进行

ETL引擎中的数据转换和处理

  • 一般以组件化的方式实现数据转换,常用的数据转换组件有字段映射、数据过滤、数据清洗、数据替换、数据计算、数据验证、数据加解密、数据合并、数据拆分等
  • 有些ETL工具还提供了脚本支持,使得用户可以以一种编程的方式定制数据的转换和处理行为

在数据库中进行数据处理

  • 关系数据库本身已经提供了强大的SQL、函数来支持数据的加工,如在SQL查询语句中添加where条件进行过滤,查询中重命名字段名与目的表进行映射,substr函数,case条件判断等
  • 相比在ETL引擎中进行数据转换和处理,直接在SQL语句中进行转换和处理更加简单清晰,性能更高,对于SQL语句无法处理的可以交由ETL引擎处理

数据加载

  • 将转换和加工后的数据装载到目的库中,装载数据的最佳方法取决于所执行操作的类型以及需要装入多少数据

当目的库是关系数据库时,一般来说有两种装载方式:

  • 直接SQL语句进行insert、update、delete操作,此方法进行了日志记录并且是可恢复的
  • 采用批量装载方法,如bcp、bulk、关系数据库特有的批量装载工具或api,此方法易于使用,并且在装入大量数据时效率较高

ETL常用工具

Kettle

  • Kettle是一款国外开源的ETL工具,纯java编写,可以在Windows、Linux、Unix上运行,数据抽取高效稳定,包括4个产品:Spoon、Pan、CHEF、Kitchen
    | 产品 | 说明 |
    | ---- | ---- |
    | SPOON | 通过图形界面来设计ETL转换过程 |
    |PAN|批量运行由Spoon设计的ETL转换,Pan是一个后台执行的程序,没有图形界面 |
    |CHEF|可以创建任务(Job),更有利于自动化更新数据仓库的复杂工作,任务将会被检查,看看是否正确地运行了 |
    |KITCHEN|批量使用由Chef设计的任务(例如使用一个时间调度器),KITCHEN也是一个后台运行的程序 |

DataPipeline

DataPipeline是一家为企业用户提供数据基础架构服务的科技公司,DataPipeline数据质量平台整合了数据质量分析、质量校验、质量监控等多方面特性,以保证数据质量的完整性、一致性、准确性及唯一性,彻底解决数据孤岛和数据定义进化的问题

Talend

Talend可运行于Hadoop集群之间,直接生成MapReduce代码供Hadoop运行,从而可以降低部署难度和成本,加快分析速度,而且Talend还支持可进行并发事务处理的Hadoop2.0

Informatica

  • Informatica PowerCenter用于访问和集成几乎任何业务系统、任何格式的数据,它可以按任意速度在企业内交付数据,具有高性能、高可扩展性、高可用性的特点
  • Informatica PowerCenter包括4个不同版本,即:标准版,实时版,高级版,云计算版
  • 它还提供了多个可选的组件,以扩展Informatica PowerCenter的核心数据集成功能,这些组件包括:数据清洗和匹配、数据屏蔽、数据验证、Teradata双负载、企业网格、元数据交换、下推优化(Pushdown Optimization)、团队开发和非结构化数据等

Datax

DataX是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS等各种异构数据源之间高效的数据同步功能

Oracle Goldengate

  • 一种基于日志的结构化数据复制软件,GoldenGate 能够实现大量交易数据的实时捕捉、变换和投递,实现源数据库与目标数据库的数据同步,保持亚秒级的数据延迟
  • 源端通过抽取进程提取redo log或archive log日志内容,通过pump进程(TCP/IP协议)发送到目标端,最后目标端的rep进程接收日志、解析并应用到目标端,进而完成数据同步

标签:抽取,转换,数据,常用工具,数据源,过程,ETL,MD5
From: https://www.cnblogs.com/shihongpin/p/18459802

相关文章

  • NR PRACH(五) type1 RA(4-step)基本过程
    无线通信,最重要的前提是建立接收端和发射端之间的时间同步。NR中,DL同步一般在小区搜索过程通过decodePSSSSSPBCH(MIB),之后根据协议规定CORESET和searchspace去找SIB1,完成小区驻留的过程完成;这个过程可以获得小区信息,系统帧号,initialRach参数等必要的信息,进而完成下行同......
  • 搜狗输入法ng版导入细胞词库过程的简要分析
    今天有点时间,对deepin/uos上的搜狗输入法ng版导入细胞词库的行为做了一下分析,过程如下:1.在属性设置界面,用户选择.scel细胞词库文件,输入法对.scel的文件头进行验证,如果是 401500004443530101,则验证通过,进行下一步操作。然而,在Windows下导入txt文件生成的细胞词库的文件......
  • db2存储过程
    在DB2数据库中调用存储过程,可以使用`CALL`语句。下面是调用存储过程的基本语法: ```sqlCALLprocedure_name([parameter1,parameter2,...]);``` 这里的`procedure_name`是你要调用的存储过程的名字,而`[parameter1,parameter2,...]`是你传递给存储过程的参数列表(如果......
  • Issac_GYM重要过程记录
    1下载相关文件进入github中下载相关的文件https://github.com/leggedrobotics/legged_gym2加载自己绘制的URTL文件这个链接用来下载宇树的Go2模型机器人https://github.com/unitreerobotics/unitree_rl_gym/tree/main下载好了urdf文件,将其中resources/robots/go2文件复制......
  • ARM Cortex-M3/M4内核架构:中断处理过程
    目录一、概述1.保存现场?什么是现场?现场包括什么?2.怎么处理异常?我们先来简单介绍下。3.又怎么恢复现场?4.异常进入流程(核心流程)二、保存现场三、恢复现场1、EXC_RETURN2、恢复现场四、异常处理优化1、末尾连锁2、延时到达3、出栈抢占五、总结一、概述中断......
  • Chromium 前端form表单提交过程分析c++
    一、本文以一个简单的HTML表单,包含两个文本输入框和一个提交按钮:<formaction="demo_form.php">Firstname:<inputtype="text"name="fname"><br>Lastname:<inputtype="text"name="lname"><br><i......
  • The Network Program Log Three(代码调试过程3)
    ​importpysharkimportos没有提示files=os.listdir('./shark_files/')forfileinfiles:print(file)ps=pyshark.FileCapture('./shark_files/'+file,tshark_path='D:/ProgramFiles/Wireshark/Wireshark.exe')forpktinps:prin......
  • 博客搭建之路:Netlify将url重定向到小写问题
    Netlify将url重定向到小写问题hexo版本5.0.2npm版本6.14.7next版本7.8.0前两天将博客从vercel改为托管到Netlify上,本来运行的挺流畅的。但是今天我看一篇博客的评论时突然发现,虽然有评论但是文章开头的评论数显示的是0这里的评论系统使用的是Valine我记得之前是好......
  • SMB签名是一种通过数字签名技术保障数据在网络传输过程中的完整性和来源验证的机制。
    SMB签名是ServerMessageBlock(SMB)协议中的一种安全机制,旨在确保数据的完整性和身份验证。1.什么是SMB签名?SMB签名是一种通过数字签名技术保障数据在网络传输过程中的完整性和来源验证的机制。它通过对数据进行哈希处理,并附加一个签名,确保接收方能够确认收到的数据没有被篡改。......
  • 数据库连接异常的解决过程
    处理数据库连接异常通常涉及以下几个步骤:确认异常信息首先查看异常的具体信息,了解错误发生的上下文环境。这有助于快速定位问题所在。检查数据库服务状态确认数据库服务器是否正常运行。可以通过命令行工具或管理界面检查数据库服务的状态。验证连接参数检查应用......