Azure Databricks 表概念

Azure Databricks 表驻留在架构中,包含数据行。 在 Azure Databricks 中创建的默认表类型是 Unity 目录托管表。

以下示例显示了一个名为包含大约五名员工数据的托管表 prod.people_ops_employees 。 作为托管表,数据文件存储在 Unity 目录的托管存储位置中的云存储中。

包含员工数据的示例表

存储格式

Azure Databricks 中的表类型定义如何拥有和访问数据。 另外,存储格式定义如何在磁盘上对数据进行物理结构和跟踪。

Azure Databricks 支持两种主要打开表存储格式:

  • Delta Lake 是 Azure Databricks 中托管表和外部表的默认存储格式。
  • Azure Databricks 中的托管表和外表支持 Apache Iceberg。 当你与 Iceberg 生态系统集成时,此格式非常有用。

这些格式添加一个事务存储层,用于跟踪元数据并启用 Atomicity、Consistency、Isolation 和 Durability (ACID) 符合性、时间旅行和其他功能。

表类型

Azure Databricks 提供三种主要表类型,每种类型专为不同的数据管理方案和所有权模型而设计。 选择的表类型决定了 Azure Databricks 如何管理基础数据文件和元数据。

Azure Databricks 中表类型的主要区别在于拥有目录,如下表所述:

表类型 管理目录 读/写支持 性能优化 存储成本优化
托管 统一目录 是的 是的 是的
External 无(仅限文件) 是的 仅手动 仅手动
外国 外部系统或目录服务 只读

托管表

托管表与元存储注册一起管理基础数据文件。 Databricks 建议每当创建新表时都使用托管表。 在 Azure Databricks 中创建表时,Unity 目录托管表是默认值。 请参阅 托管表

外部表

外部表(有时称为 非托管表)引用存储在外部存储系统中的 Databricks 外部的数据,例如云对象存储。 它们将基础数据文件的管理与元存储注册分离。 Unity 目录支持多种格式的外部表,包括 Delta Lake。 Unity 目录外部表可以使用外部系统可读的通用格式存储数据文件。 请参阅 外部表

外表

外表表示通过 Lakehouse Federation 连接到 Azure Databricks 的外部系统中存储的数据。 外部表在 Azure Databricks 上是只读的。 请参阅 “外表”。

Unity 目录中的表

在 Unity 目录中,表位于三级命名空间(catalog.schema.table)的第三个级别,如下图所示:

Unity 目录对象模型关系图,侧重于表

基本表权限

大多数表作都需要USE CATALOGUSE SCHEMA对包含表的目录和架构具有权限。

下表汇总了 Unity 目录中常见表作所需的附加权限:

操作 Permissions
创建表 CREATE TABLE 包含架构上的
查询表 SELECT 表上的
将数据更新、删除、合并或插入表 SELECTMODIFY 表上
删除表 MANAGE 表上的
替换表 MANAGE 表上的 CREATE TABLE 包含架构

有关 Unity 目录权限的详细信息,请参阅 “管理 Unity 目录中的权限”。