本文提供 Azure Databricks 上表和视图类型的概念性概述,重点介绍有关处理 ETL 工作负荷的表和视图的最佳做法和建议。
表是存储在特定位置的结构化数据集。 Databricks 建议对在 Azure Databricks 上创建或更新的所有表使用 Delta Lake 格式支持的表。 表在存储上存储数据,可以使用 SQL 命令或数据框架 API 进行查询和操作,支持插入、更新、删除和合并等操作。 请参阅 Delta 表基础知识。
视图是 SQL 查询定义的虚拟表。 视图本身不存储数据。 相反,视图提供一种以特定格式或抽象形式呈现来自一个或多个表的数据的方法。 视图可用于简化复杂的查询、封装业务逻辑,以及为底层数据提供一致的接口,而无需复制存储。 请参阅什么是视图?。
创建表时,Azure Databricks 使用 Delta Lake 作为默认格式。 由 Delta Lake 支持的表也称为 Delta 表。 Delta 表将数据作为文件目录存储在云对象存储中,并将表元数据注册到目录和架构中的元存储。
所有 Unity Catalog 托管表都是 Delta 表。 流式处理表和物化视图是 Delta 表的特殊实现。
Delta 表包含可以使用 SQL、Python 和 Scala API 查询和更新的数据行。 最终用户与这些表交互的方式与任何其他数据库中的表相同。 Delta Lake 支持的表也可以由 Azure Databricks 外部的系统查询。 请参阅使用外部系统来访问 Databricks 数据。
虽然可以在不使用 Delta Lake 的 Databricks 上创建表,但这些表不提供 Delta 表的事务保证或优化性能。 有关使用 Delta Lake 以外的格式的其他表类型的详细信息,请参阅 “使用外部表”。
下表将解答有关 Delta 表的常见问题。
重要
下面所述的 Delta Lake 表包含 Delta Lake 支持的托管表和外部表。 Unity Catalog 管理表拥有外部表不支持的优化和功能。
问题 | Delta 表 |
---|---|
这是什么? | 支持 Delta Lake 的表实现了 ACID 事务、架构强制和其他 Delta Lake 功能。 |
建议将其用于哪些用例? | 在 Azure Databricks 上查询或保存数据的所有操作。 |
它是如何填充的? | 过程代码(INSERT 、UPDATE 、MERGE 、使用 replaceWhere 的分区覆盖) |
Unity Catalog 中的对象类型是什么? | 表 |
谁可以进行更新? | 任何可以更新 Delta 表的写入者。 |
它与哪些 Delta Lake 功能兼容? | 支持所有的 Delta Lake 功能。 |