使用托管表

Azure Databricks 管理着托管表的生命周期和文件布局。 托管表是创建表的默认方法。

Databricks 建议对 Azure Databricks 中管理的所有表格数据使用托管表。

托管表的数据文件存储在与包含它的架构关联的托管存储位置中。 请参阅 在 Unity 目录中指定托管存储位置

可以在 Azure Databricks 支持的所有语言和产品中使用托管表。 需要某些权限才能创建、更新、删除或查询托管表。 请参阅 Unity 目录中的管理特权

对托管表的所有读取和写入都应通过 Unity 目录并使用表名称。 有关将外部客户端与 Unity 目录托管表配合使用的信息,请参阅 使用外部系统访问 Databricks 数据

本文重点介绍 Unity Catalog 托管表。 旧 Hive 元存储中的托管表具有不同的行为。 请参阅 旧版 Hive 元存储中的数据库对象

创建托管表

默认情况下,每当在 Azure Databricks 中使用 SQL 命令、Spark 或其他工具创建表时,该表都被托管。

以下 SQL 语法演示如何使用 SQL 创建空托管表。 替换占位符值替:

  • <catalog-name>:将包含表的目录的名称。
  • <schema-name>:将包含该表的架构的名称。
  • <table-name>:表的名称。
  • <column-specification>:每列的名称和数据类型。
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
);

许多用户根据查询结果或 DataFrame 写入操作创建托管表。 以下文章演示了可用于在 Azure Databricks 上创建托管表的一些模式:

所需的权限

若要创建托管表,你必须具备:

  • 对表的父架构的 USE SCHEMA 权限。
  • 对表的父目录的 USE CATALOG 权限。
  • 对表的父架构的 CREATE TABLE 权限。

删除托管表

你必须是表的所有者,或者对表具有 MANAGE 权限才能将其删除。 若要删除托管表,请运行以下 SQL 命令:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Unity 目录支持 UNDROP TABLE 命令在 7 天内恢复已删除的托管表。 7 天后,Azure Databricks 会标记要从云租户中删除的基础数据,并在自动表维护期间删除文件。 请参阅 UNDROP