本节中的文章提供了 DLT 管道中数据摄取和转换的常见模式、建议和示例,以及将转换后的数据写入外部服务。 引入源数据以在管道中创建初始数据集时,这些初始数据集通常称为 bronze 表,它们通常执行简单的转换。 相比之下,管道中的最终表(通常称为 gold 表)通常需要复杂的聚合,或从作为 操作目标的源中读取。
加载数据
可以使用 DLT 从 Azure Databricks 上的 Apache Spark 支持的任何数据源加载数据。 有关从不同源加载数据的模式示例,包括云对象存储、Kafka 等消息总线以及 PostgreSQL 等外部系统,请参阅 使用 DLT 加载数据。 这些示例包括建议,例如将流式处理表与 DLT 中的自动加载程序配合使用,以优化数据摄取体验。
数据流
在 DLT 中, 流 是一个流式处理查询,该查询以增量方式处理源数据以更新目标流式处理表。 实现 DLT 管道所需的许多流式处理查询会在查询定义过程中创建隐式流。 当需要更专业化的处理时,DLT 还支持显式声明流。 若要详细了解 DLT 流,并查看使用流实现数据处理任务的示例,请参阅 使用 DLT 流以增量方式加载和处理数据。
变更数据捕获 (CDC)
更改数据捕获(CDC)是一种数据集成模式,用于捕获对源系统中数据所做的更改,例如插入、更新和删除。 CDC 通常用于有效地将表从源系统复制到 Databricks。 DLT 使用 APPLY CHANGES
API 简化了 CDC。 通过自动处理序列外记录, APPLY CHANGES
DLT 中的 API 可确保正确处理 CDC 记录,并不需要开发复杂的逻辑来处理序列外记录。 请参阅 什么是变更数据捕获(CDC)? 和 “应用更改 API:使用 DLT 简化更改数据捕获”。
转换数据
使用 DLT,可以对数据集声明转换,并指定如何通过查询逻辑处理记录。 有关生成 DLT 管道时常见转换模式的示例,包括使用流式处理表、具体化视图、流静态联接和管道中的 MLflow 模型,请参阅 使用 DLT 转换数据。
使用水印优化 DLT 中的有状态处理
为了有效地管理保持状态的数据,可以在 DLT 中执行有状态流处理时使用水印,包括聚合、联接和重复数据删除。 在流处理中,水印是一项 Apache Spark 功能,可在执行有状态操作时定义用于处理数据的基于时间的阈值。 到达的数据将得到处理,直到达到阈值,此时由阈值定义的时间窗口关闭。 水印可用于避免查询处理过程中出现的问题,这些问题多发生在处理较大的数据集时或长时间运行的处理中。
有关示例和建议,请参阅 使用水印优化 DLT 中的有状态处理。
使用 DLT 汇聚器将记录写入外部服务
重要
DLT sink
API 目前为公共预览版。
除了将转换后的数据保存到 Unity 目录 和 Hive 元存储中的 Azure Databricks 托管 Delta 表之外,还可以使用 DLT 接收器保存到外部目标,包括 Apache Kafka 或 Azure 事件中心等事件流服务,以及 Unity 目录或 Hive 元存储管理的外部表。 请参阅使用 DLT 接收器将记录流式传输到外部服务。