本文概述
- 1)使用批处理构建ETL管道
- 2)使用流处理构建ETL管道
文章图片
执行ETL流程的步骤为:
萃取
提取是从不同来源(如文本文件, XML文件, Excel文件或各种其他来源)收集数据的第一个过程。
转型
转换是ETL过程的第二步, 其中所有收集的数据都已转换为相同格式。格式可以是我们要求的任何格式。在此步骤中, 将一组功能规则应用于提取的数据, 以将其转换为单个标准格式。它可能涉及以下任务:
- 过滤:只有特定的属性正在加载到数据仓库中。
- 清洁:使用特定的默认值填充空值。
- 联接:将多个属性联接到一个。
- 拆分:将单个属性拆分为多个属性。
- 排序:根据属性对元组进行排序。
加载是ETL过程的最后一步。大量数据是从各种来源收集的, 对其进行转换, 然后最终加载到数据仓库中。
ETL是从不同源系统提取数据, 转换数据并将数据加载到数据仓库的过程。 ETL流程需要开发人员, 分析师, 测试人员, 高层管理人员等各种利益相关者的积极投入。
ETL(提取, 转换和加载)是从原始数据中提取信息的自动化过程, 该信息是分析所必需的, 并将其转换为可满足业务需求的格式, 并将其加载到数据仓库中。 ETL通常会汇总数据以减小其大小并提高特定分析类型的性能。
ETL过程使用流水线概念。在此概念中, 一旦提取数据就可以对其进行转换, 并且在转换期间可以获取新数据。并且, 当将修改后的数据加载到数据仓库中时, 可以转换已提取的数据。
文章图片
在构建ETL基础结构时, 我们必须集成数据源, 仔细计划和测试以确保我们正确转换源数据。
在这里, 我们将说明构建ETL基础结构的三种方法, 以及在不使用ETL的情况下构建数据管道的另一种方法。
1)使用批处理构建ETL管道 这里是构建传统ETL流程的过程, 在该过程中, 我们从源数据库到数据仓库批量传输和处理数据。开发企业ETL管道是一项挑战。我们通常将依靠ETL工具(例如Stitch和Blendo)来简化和自动化流程。
使用批处理构建ETL, 这是ETL最佳实践。
1)参考数据:在这里, 我们将创建一组数据, 该数据定义了一组允许的值, 并且可能包含该数据。
示例:在国家/地区数据字段中, 我们可以定义允许的国家/地区代码。
2)从数据参考中提取:ETL步骤的成功在于正确提取数据。大多数ETL系统将来自多个源系统的数据进行组合, 每个数据源都具有其数据组织和格式, 包括关系数据库, 非关系数据库, XML, JSON, CSV文件, 并且在成功提取之后, 数据将转换为单一格式以标准化格式。
3)数据验证:自动化过程将确认从源中提取的数据是否具有预期值。例如, 数据字段应包含过去一年的财务交易数据库中过去12个月内的有效日期。如果验证引擎未通过验证规则, 则其将拒绝数据。我们会定期分析被拒绝的记录, 以找出问题所在。在这里, 我们更正源数据或修改提取的数据以解决下一批问题。
4)转换数据:删除多余或错误的数据, 应用业务规则, 检查数据完整性(确保数据在源中未损坏或在ETL中未损坏, 并且在前一阶段未删除任何数据), 并根据需要创建了聚合。如果我们分析收入, 则可以将发票的美元金额汇总为每日或每月总计。我们需要对一系列规则或功能进行编程和测试, 以实现所需的转换并在提取的数据上运行它们。
5)阶段:通常, 我们通常不会将转换后的数据直接加载到目标数据仓库中。数据应首先输入到暂存数据库中, 以便在出现问题时更容易回滚。在这一点上, 我们还可以生成审计报告以确保合规性或诊断和修复数据问题。
6)发布到数据仓库:将数据加载到目标表。一些数据仓库每次都会覆盖现有信息, ETL管道每天, 每月或每周加载一个新批次。换句话说, ETL可以添加新数据而不会被覆盖, 并带有时间戳指示它是唯一的。我们必须仔细执行此操作, 以防止由于磁盘空间和性能限制而导致数据仓库“突发”。
2)使用流处理构建ETL管道 现代数据处理通常包括实时数据。例如, 来自大型电子商务网站的网络分析数据。在这些用例中, 我们无法大批量提取和转换数据, 并且需要对数据流执行ETL, 这意味着当客户端应用程序将数据写入数据源时, 应立即处理, 转换数据并将其保存到目标。数据存储。今天有许多流处理工具可用, 包括apache Samza, Apache商店和Apache Kafka。
文章图片
基于Kafka构建流式ETL涉及以下几点:
1)将数据提取到Kafka中:JDBC连接器提取源表的每一行。当客户端应用程序向表中添加行时, Kafka会自动将它们作为新消息写入Kafka主题, 从而启用实时数据流。
2)从Kafka中提取数据:ETL应用程序从Kafka主题中提取消息为Avro Records, 它创建一个Avro模式文件并反序列化它们, 并从消息中创建KStream对象。
3)在KStream对象中转换数据:使用Kafka Streams API, 流处理器一次接收一条记录, 对其进行处理, 并可以从下游处理器生成一条或多条输出记录。它们可以一次转换一条消息, 根据条件对其进行过滤, 或者对多条消息执行数据操作。
【ETL测试流程】4)将数据加载到其他系统:ETL应用程序仍然保留数据, 现在这需要将其流式传输到目标系统, 例如数据仓库或数据湖。他们的目的是使用S3接收器连接器将数据流传输到Amazon S3。我们可以实现与其他系统的集成。例如:使用Amazon Kinesis将数据流传输到Redshift数据仓库。