数据转换是对数据进行转换、清理和结构化,以将其转为可用格式的过程。 数据转换通常遵循 Databricks 奖牌体系结构,即以增量方式将原始数据细化为可供业务使用的格式。
下图显示包含一系列数据转换的数据管道,通过删除本示例中无客户名称的客户数据,将 raw_customers
数据集转换为 clean_customers
数据集。 通过删除零美元价值的事务,将 raw_transactions
数据转换为 clean_transactions
数据。 名为 sales_report
的结果数据集可联接 clean_customers
和 clean_transactions
。 分析师可将 sales_report
用于分析和商业智能。
数据转换类型
Databricks 考虑两种类型的数据转换:声明性转换和程序性转换。 前述示例中的数据管道可使用任一范例以进行表示。
声明性转换重点关注预期结果,而不是实现方式。 可使用高级别抽象指定转换的逻辑,增量实时表可确定执行转换的最有效方法。
程序性数据转换重点关注通过显式指令执行计算。 这些计算定义操作数据的确切顺序。 程序性方法可以更好地控制执行,但其复杂性更高,维护成本也更高。
在声明性数据转换和程序性数据转换之间作出选择
使用增量实时表的声明性数据转换适用于以下情况:
- 需要进行快速开发和部署。
- 数据管道具有标准模式,无需对执行进行低级别控制。
- 需要内置的数据质量检查。
- 维护和可读性是重中之重。
使用 Apache Spark 代码的程序性数据转换适用于以下情况:
- 需将现有的 Apache Spark 代码库迁移至 Databricks。
- 需对执行进行精细控制。
- 需访问低级别的 API,例如
MERGE
或foreachBatch
。 - 需将数据写入 Kafka 或外部增量表。