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。