组织面临的一个常见问题是如何以多种格式从多个数据源收集数据。 然后,需要将其移动至一个或多个数据存储区。 目标的数据存储类型可能与数据源不同。 通常格式不同,或者需要在将数据加载至最终目标之前对其进行整形或清理。
过去几年以来,行业中已开发了多种工具、服务和过程来解决这些难题。 不管采用哪种过程,往往都需要协调工作,并在数据管道中应用某种级别的数据转换。 以下部分重点介绍执行这些任务的常用方法。
提取、转换、加载 (ETL) 过程
提取、转换、加载 (ETL) 是一种用于从不同数据源收集数据的数据管道。 然后根据业务规则对数据进行转换,并将数据加载到目标数据存储区中。 ETL 中的转换工作在专用引擎中进行,通常涉及到使用临时表暂时保存正在转换、并最终要载入其目标的数据。
数据转换通常涉及到各种操作,例如筛选、排序、聚合、联接数据、清理数据、删除重复数据和验证数据。
通常,三个 ETL 阶段是同时运行的,以节省时间。 例如,在提取数据时,转换过程可以处理已收到的数据并做好加载数据的准备,加载过程可以开始处理已准备好的数据,而无需等待整个提取过程完成。
相关的 Azure 服务:
其他工具:
提取、加载、转换 (ELT)
提取、加载、转换 (ELT) 与 ETL 的唯一不同之处在于转换的发生位置。 在 ELT 管道中,转换发生在目标数据存储中。 在不使用单独转换引擎的情况下,将使用目标数据存储的处理功能来转换数据。 这就从管道中删除了转换引擎,从而简化了体系结构。 此方法的另一个好处是,缩放目标数据存储也会缩放 ELT 管道性能。 但是,仅当目标系统足够强大,可以有效转换数据时,ELT 才能正常工作。
ELT 的典型用例属于大数据领域。 例如,首先可将所有源数据提取到 Hadoop 分布式文件系统、Azure Blob Storage 或 Azure Data Lake gen 2(或者两者组合)等可缩放存储中的平面文件。 然后,可以使用 Spark、Hive 或 PolyBase 等技术查询源数据。 ELT 的关键之处在于,用于执行转换的数据存储是最终要在其中使用数据的同一数据存储。 此数据存储直接从可缩放的存储读取,而不是将数据载入其自身的专有存储。 此方法可跳过 ETL 中存在的数据复制步骤,该步骤对于大型数据集运行往往很耗时。
事实上,目标数据存储是使用 Hadoop 群集(使用 Hive 或 Spark),或者使用 Azure Synapse Analytics 上 SQL 专用池的数据仓库。 一般情况下,架构在查询时叠加在平面文件数据上,并存储为表,因此,可以像查询数据存储中的其他任何数据一样查询这些数据。 这些表称为外部表,因为数据不存在于由数据存储本身管理的存储中,而是存在于某个外部可缩放存储中(例如:Azure Data Lake Store 或 Azure Blob 存储)。
数据存储只管理数据的架构,并在读取时应用架构。 例如,使用 Hive 的 Hadoop 群集会描述一个 Hive 表,其中的数据源实际上是 HDFS 中一组文件的路径。 在 Azure Synapse 中,PolyBase 可以取得相同的结果 — 针对在外部存储至数据库本身的数据创建一个表。 加载源数据后,可以使用数据存储的功能处理外部表中的数据。 在大数据方案中,这意味着数据存储必须能够执行大规模并行处理 (MPP),将数据分解成较小区块,并跨多个节点并行分布对区块的处理。
ELT 管道的最后一个阶段通常是将源数据转换为最终格式,对于需要支持的查询类型,此格式更为有效。 例如,可将数据分区。 此外,ELT 可能使用 Parquet 等优化的存储格式,以纵栏表形式存储面向行的数据,并提供优化的索引。
相关的 Azure 服务:
- Azure Synapse Analytics 上的 SQL 专用池
- Azure Synapse Analytics 上的 SQL 无服务器池
- 基于 Hive 的 HDInsight
- Azure 数据工厂
- Power BI 中的数据市场
其他工具:
数据流和控制流
在数据管道的上下文中,控制流确保有序处理一组任务。 要实施这些任务的正确处理顺序,可以使用优先约束。 可将这些约束视为工作流关系图中的连接器,如下图所示。 每个任务都有结果,例如成功、失败或完成。 只有在前面的任务已完成并生成了结果时,后面的任务才会启动处理。
控制流以任务的形式执行数据流。 在数据流任务中,会从源提取数据、转换数据,或将数据载入数据存储。 一个数据流任务的输出可以是下一个数据流任务的输入,数据流可以并行运行。 与控制流不同,无法在数据流中的任务之间添加约束。 但是,可以添加数据查看器来观察每个任务处理的数据。
在上图中,控制流包含多个任务,其中一个任务是数据流任务。 有一个任务嵌套在容器中。 可以使用容器来提供任务结构和工作单元。 一个例子是使用容器来重复集合中的元素,例如文件夹中的文件,或数据库语句。
相关的 Azure 服务:
其他工具:
技术选择
后续步骤
- 与 Azure 数据工厂或 Azure Synapse 管道进行数据集成
- Azure Synapse Analytics 简介
- 协调 Azure 数据工厂或 Azure Synapse 管道中的数据移动和转换
相关资源
以下参考体系结构演示了 Azure 上的端到端 ELT 管道: