表驻留在架构中,包含数据行。 在 Azure Databricks 中创建的默认表类型是 Unity 目录托管表。
Azure Databricks 中表类型的主要区别在于拥有方目录,如下表中所述:
表类型 | 管理目录 | 读/写支持 | 性能优化 | 存储成本优化 |
---|---|---|---|---|
托管 | 统一目录 | 是的 | 是的 | 是的 |
外部 | 无(仅限文件) | 是的 | 仅手动 | 仅限手动 |
外 | 外部系统或目录服务 | 只读 | 否 | 否 |
以下示例显示了一个名为 prod.people_ops_employees
包含大约五名员工数据的表。 元数据在 Unity Catalog 中注册,数据存储在云存储中。
存储格式:Delta Lake 和 Apache Iceberg
Azure Databricks 中的表类型定义如何拥有和访问数据。 另外,存储格式定义如何在磁盘上对数据进行物理结构和跟踪。
Azure Databricks 支持两种主要开放表格式:Delta Lake 和 Apache Iceberg。 这些格式添加一个事务存储层,用于跟踪元数据并启用 ACID 符合性、时间旅行和其他功能。
- Delta Lake 是 Azure Databricks 中托管表和外部表的默认存储格式。
- 在 Azure Databricks 中,托管表和外表均支持 Apache Iceberg。 当你与 Iceberg 生态系统集成时,此格式非常有用。
托管表
托管表与元存储注册一起管理基础数据文件。 Databricks 建议每当创建新表时都使用托管表。 在 Azure Databricks 中创建表时,默认表是 Unity Catalog 托管表。 请参阅 Azure Databricks for Delta Lake 和 Apache Iceberg 中的 Unity 目录托管表。
外部表
外部表有时被称为非托管表,它们指的是存储在外部存储系统(例如云对象存储)中的数据,该存储系统位于 Databricks 之外。 它们将底层数据文件的管理与元存储注册分离。 Unity Catalog 支持多种格式的外部表格,包括 Delta Lake。 Unity Catalog 外部表可以使用外部系统可读的通用格式存储数据文件。 请参阅使用外部表。
外表
外部表表示存储在通过 Lakehouse Federation 连接到 Azure Databricks 的外部系统中的数据。 外表在 Azure Databricks 上是只读的。 请参阅使用外表。
Unity Catalog 中的表
在 Unity 目录中,表位于三级命名空间(catalog.schema.table
)的第三个级别,如下图所示。
基本数据表权限
大多数表操作需要对包含表的目录和架构具有USE CATALOG
USE SCHEMA
权限。
下表汇总了 Unity 目录中常见表作所需的附加权限:
操作 | 权限 |
---|---|
创建表 | 对包含架构拥有 CREATE TABLE 权限 |
查询表 | 对表拥有 SELECT 权限 |
将数据更新、删除、合并或插入表 | 对表拥有 SELECT 和 MODIFY 权限 |
删除表 | 对表拥有 MANAGE 权限 |
替换表 | 对表拥有 MANAGE 权限,对包含架构拥有 CREATE TABLE 权限 |
有关 Unity Catalog 权限的详细信息,请参阅管理 Unity 目录中的权限。