教程:在 Unity Catalog 中创建第一个表并授予权限
本文提供了在 Unity Catalog 中创建表和授予权限的快速演练。 它适用于用户,但新负责 Unity Catalog 管理的管理员也可能感兴趣。
要立即开始,可以直接转到本文的第一部分。 要先熟悉基本概念,请参阅什么是 Unity Catalog?。
如果你是负责为组织设置和管理 Unity Catalog 的管理员,请参阅设置和管理 Unity Catalog。
开始之前的准备工作
要执行本文中所述的任务,必须具有:
- 为 Unity Catalog 启用的 Azure Databricks 工作区。 请参阅设置和管理 Unity Catalog。
- 访问使用 Unity Catalog 兼容的访问模式的计算。 SQL 仓库符合 Unity Catalog 要求。 要了解符合 Unity Catalog 的群集,请参阅访问模式。
- 对 Unity Catalog 中的某个目录的访问权限。 请参阅确认对目录的访问权限。
- Unity Catalog 对象的相应权限。 每个任务的开头都列出了这些项。
- 添加到工作区的其他用户和组。 请参阅管理用户、服务主体和组。
确认对目录的访问权限
若要运行本文中的教程,你必须对 Unity Catalog 中的某个目录具有 USE CATALOG
特权,并且对该目录中的 default
架构具有 USE SCHEMA
和 CREATE TABLE
特权。 目录是 Unity Catalog 中三级命名空间的顶层:catalog.schema.table
。
若要确定你是否有权访问某个目录,请执行以下操作:
登录到你的工作区。
单击 “目录”。
在左窗格中的“目录”下,查看你有权列出的任何目录。
如果你看到一个以你的工作区命名的工作区目录,请转到创建你的第一个表并管理权限(对于包括工作区目录的工作区)。 如果你看到一个主目录,请转到创建你的第一个表并管理权限(对于包括主目录的工作区)。
若要确定你是否对任何其他目录具有足够的权限,请单击左窗格中的目录名称以打开详细信息窗格,并打开“权限”选项卡以查看你的权限。 如果在目录上具有
USE CATALOG
,并且在目录的默认架构上具有USE SCHEMA
和CREATE TABLE
,可按照创建第一个表并管理权限(对于包含主目录的工作区)教程操作。
如果你对任何目录都没有 USE CATALOG
权限,请要求帐户管理员为你分配该权限。 还需要在目录的 default
架构上具有 USE SCHEMA
和 CREATE TABLE
。
创建你的第一个表并管理权限(对于包括工作区目录的工作区)
如果你的工作区自动启用了 Unity Catalog 并且包括一个以工作区命名的工作区目录,请使用此教程。 请参阅确认对目录的访问权限。
Unity Catalog 允许使用 SQL 或 Databricks 资源管理器 UI 以声明方式定义对表的访问。
此示例将运行一个笔记本,该笔记本在工作区目录和 default
架构(数据库)中创建一个名为 department
的表。 自动为已自动为 Unity Catalog 启用的所有工作区创建此目录和架构。
所需权限:对工作区目录的 USE CATALOG
权限,以及对 <workspace-catalog>.default
架构的 USE SCHEMA
和 CREATE TABLE
权限。 创建工作区时,会向所有工作区用户授予这些权限。 除了在运行此示例时授予的权限之外,无需其他权限即可完成此示例。
创建笔记本并将其附加到符合 Unity Catalog 的群集或 SQL 仓库。 请参阅准备工作。
选择
SQL
作为笔记本语言。将以下命令添加到笔记本并运行它们(其中
<workspace-catalog>
是你的工作区目录的名称):USE CATALOG <workspace-catalog>
CREATE TABLE IF NOT EXISTS default.department ( deptcode INT, deptname STRING, location STRING );
INSERT INTO default.department VALUES (10, 'FINANCE', 'EDINBURGH'), (20, 'SOFTWARE', 'PADDINGTON');
注意
如果工作区目录设置为工作区的默认目录,则无需提供完整的三级别命名空间 (
<workspace-catalog>.default.department
) 或USE CATALOG <catalog>
语句,因为工作区目录已定义为工作区的默认目录,因此采用了该目录。 每当引用非默认目录的目录时,都必须在语句中指定目录,或使用USE CATALOG <catalog>
语句声明该目录。Unity Catalog 中现在有一个表。
在目录资源管理器中找到新表。
在边栏中单击 “目录”,然后浏览或搜索工作区目录 (
<workspace-name>
) 和default
架构,可在其中找到department
表。请注意,无需运行群集或 SQL 仓库即可在目录资源管理器中浏览数据。
授予对表的权限。
作为原始的表创建者,你是表的所有者,并可以授予其他用户读取或写入表的权限。 你甚至可以转移所有权,但此处我们不会这样做。
在目录资源管理器中的表页上,转到“权限”选项卡并单击“授予”。
在“授予对象”对话框中:
- 选择要向其授予权限的用户和组。 此示例使用名为
data-consumers
的组。 - 选择要授予的特权。 对于此示例,请分配
SELECT
(读取)权限并点击“授予”。
有关 Unity Catalog 特权和权限模型的详细信息,请参阅在 Unity Catalog 中管理特权。
还可以在 Azure Databricks 笔记本或 Databricks SQL 查询编辑器中使用以下 SQL 语句授予这些权限:
GRANT SELECT ON default.department TO `data-consumers`;
- 选择要向其授予权限的用户和组。 此示例使用名为
创建你的第一个表并管理权限(对于包括主目录的工作区)
如果有权访问 main
目录,请使用此教程。 请参阅确认对目录的访问权限。
注意
另外,你还可以将此教程用于你具有以下权限的任何目录:对目录的 USE CATALOG
权限,以及对 default
架构的 USE SCHEMA
和 CREATE TABLE
权限。 在下面的示例中,请将 main
替换为你的目录名称。
Unity Catalog 允许使用 SQL 或 Databricks 资源管理器 UI 以声明方式定义对表的访问。
此示例将运行一个笔记本,该笔记本在 main
目录和 default
架构(数据库)中创建一个名为 department
的表。 系统会自动为所有元存储创建此目录和架构。
还可以尝试运行执行相同任务的示例笔记本。
所需的权限
此教程还要求对 main
目录具有 USE CATALOG
特权,对 main.default
架构具有 USE SCHEMA
和 CREATE TABLE
特权。
默认情况下,所有帐户用户都对 main
具有 USE CATALOG
特权,对 default
具有 USE SCHEMA
特权。 你可能需要要求目录所有者为你授予对默认架构的 CREATE TABLE
特权。 如果你是元存储管理员或目录所有者,则可以在支持 Unity Catalog 的笔记本中使用以下命令向自己或任何用户或组授予 CREATE TABLE
特权:
GRANT CREATE TABLE ON SCHEMA main.default TO `<user or group>`;
教程说明
创建笔记本并将其附加到支持 Unity Catalog 的群集。 请参阅准备工作。
选择
SQL
作为笔记本语言。在笔记本中添加并运行以下命令:
CREATE TABLE IF NOT EXISTS main.default.department ( deptcode INT, deptname STRING, location STRING );
INSERT INTO main.default.department VALUES (10, 'FINANCE', 'EDINBURGH'), (20, 'SOFTWARE', 'PADDINGTON');
Unity Catalog 中现在有一个表。
在目录资源管理器中找到新表。
在边栏中单击 “目录”,然后使用浏览器(或通过搜索)找到
main
目录和default
架构,可在其中找到department
表。请注意,无需运行群集或 SQL 仓库即可在目录资源管理器中浏览数据。
授予对表的权限。
作为原始的表创建者,你是表的所有者,并可以授予其他用户读取或写入表的权限。 你甚至可以转移所有权,但此处我们不会这样做。
在目录资源管理器中的表页上,转到“权限”选项卡并单击“授予”。
在“授予对象”对话框中:
- 选择要向其授予权限的用户和组。 此示例使用名为
data-consumers
的组。 - 选择要授予的特权。 对于此示例,请分配
SELECT
特权并单击“授予”。
有关 Unity Catalog 特权和权限模型的详细信息,请参阅在 Unity Catalog 中管理特权。
还可以在 Azure Databricks 笔记本或 Databricks SQL 查询编辑器中使用以下 SQL 语句授予这些权限:
GRANT SELECT ON main.default.department TO `data-consumers`;
- 选择要向其授予权限的用户和组。 此示例使用名为
运行后面的示例笔记本之一以获得更详细的演练,其中包括目录和架构创建、可用特权摘要、示例查询等。
示例笔记本:创建第一个目录、架构和表
可以使用以下示例笔记本创建目录、架构和表,并管理对每项的权限。
使用 Python 笔记本创建和管理 Unity Catalog 表
使用 SQL 笔记本创建和管理 Unity Catalog 表
后续步骤
了解有关以下方面的详细信息: