开始使用Unity目录

本文提供了为您的组织设置Unity Catalog的逐步指导。它描述了如何使你的Databricks帐户使用Unity目录,以及如何在Unity目录中创建你的第一个表。

Unity目录设置概述

本节提供了如何设置你的Databricks帐户来使用Unity Catalog和创建你的第一个表的高级概述。有关详细的步骤说明,请参阅后面的部分。

要启用您的Databricks帐户使用Unity Catalog,请执行以下操作:

  1. 配置一个S3桶和IAM角色,Unity Catalog可以用来存储和访问您的AWS帐户中的数据。

  2. 为您的组织运行的每个区域创建一个metastore。这个metastore作为Unity Catalog中所有数据的顶级容器。

    作为metastore的创建者,您是它的所有者和metastore管理员。

  3. 将工作空间附加到metastore。每个工作空间将拥有与您在Unity Catalog中管理的数据相同的视图。

  4. 向Databricks帐户添加用户、组和服务主体。

    对于现有的Databricks帐户,这些标识已经存在。

  5. (可选)转移你的metastore管理角色到一个组。

要为您的用户设置数据访问,您可以执行以下操作:

  1. 在工作空间中,至少创建一个计算资源:集群或SQL仓库。

    您将在运行查询和命令时使用此计算资源,包括在Unity Catalog中安全的数据对象上的grant语句。

  2. 至少创建一个目录。

    目录包含模式(数据库),而模式(数据库)又包含用户使用的表。

  3. 至少创建一个模式。

  4. 创建表。

对于数据层次结构中的每一层(目录、模式、表),都向用户、组或服务主体授予特权。还可以使用授予行级或列级权限动态视图

需求

  • 您必须是Databricks帐户admin。

  • 您的Databricks帐户必须在优质计划或以上

  • 在AWS中,您必须能够创建S3桶、IAM角色、IAM策略和跨帐户信任关系。

  • 你必须至少有一个你想要使用Unity目录的工作空间。看到创建和管理工作空间

在AWS中配置存储桶和IAM角色

在此步骤中,您将创建Unity Catalog所需的AWS对象,以存储和访问AWS帐户中的数据。

  1. 找到您的Databricks帐户ID。

    1. 登录数据库账户控制台

    2. 点击用户配置文件用户配置文件

    3. 从弹出窗口复制帐户ID价值。

  2. 在AWS中,创建S3桶。

    这个S3桶将是的根存储位置管理表在Unity目录。为每个metastore使用一个专用的S3桶,并将其定位于与您希望从中访问数据的工作区相同的区域。记录S3桶路径,以s3: / /

    这个默认存储位置可以在编目和模式级别被重写。

    重要的

    桶名不能包含点符号(例如,incorrect.bucket.name.notation).有关更多桶命名指导,请参见AWS桶命名规则

    如果开启了S3桶的KMS加密功能,请记录KMS加密密钥的名称。

  3. 创建IAM角色,允许访问S3桶。

    建立一个跨帐户的信任关系,这样Unity Catalog就可以承担角色,代表Databricks用户访问桶中的数据。您的角色还必须配置为自我假设,即信任自己。将以下策略JSON粘贴到信任关系选项卡。

    • 不修改第一个角色ARN主要部分。这是一个引用Databricks创建的角色的静态值。

    • 第二个角色ARN是对您正在创建的角色的自引用,因为角色必须是自假定的。有关自我假设角色的信息,请参见此亚马逊博客文章.取代< YOUR_AWS_ACCOUNT_ID >而且< THIS_ROLE_NAME >使用实际的IAM角色值。

    • sts: ExternalId部分,取代< DATABRICKS_ACCOUNT_ID >使用步骤1中找到的Databricks帐户ID(不是AWS帐户ID)。

    “版本”“2012-10-17”“声明”“效应”“允许”“校长”“AWS”“攻击:aws:我::414351767826:角色/ unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL”“攻击:aws:我::< YOUR_AWS_ACCOUNT_ID >:角色/ < THIS_ROLE_NAME >”},“行动”“sts: AssumeRole”“条件”“StringEquals”“sts: ExternalId”“< DATABRICKS_ACCOUNT_ID >”
  4. 在AWS中,需要在与S3桶相同的AWS帐户中创建IAM策略。

    为避免出现意外问题,您必须使用以下示例策略,替换以下值:

    • <桶>:上一步创建的S3桶名称。

    • < KMS_KEY >:可选的。如果启用了加密,请提供加密S3桶内容的KMS密钥的名称。如果加密被禁用,则删除IAM策略的整个KMS部分。

    • < AWS_ACCOUNT_ID >:当前AWS帐户(不是您的Databricks帐户)的Account ID。

    • < AWS_IAM_ROLE_NAME >:上一步创建的AWS IAM角色名。

    “版本”“2012-10-17”“声明”“行动”“s3: GetObject”“s3: propertynames”“s3: DeleteObject”“s3: ListBucket”“s3: GetBucketLocation”“s3: GetLifecycleConfiguration”“s3: PutLifecycleConfiguration”],“资源”“攻击:aws: s3::: <斗> / *”“攻击:aws: s3::: <斗> "],“效应”“允许”},“行动”“公里:解密”“公里:加密”公里:GenerateDataKey *”],“资源”“攻击:aws:公里:< KMS_KEY >”],“效应”“允许”},“行动”“sts: AssumeRole”],“资源”“攻击:aws:我::< AWS_ACCOUNT_ID >:角色/ < AWS_IAM_ROLE_NAME >”],“效应”“允许”

    请注意

    • 如果您需要Unity Catalog的更严格的IAM策略,请联系您的Databricks代表寻求帮助。

    • 砖使用GetLifecycleConfiguration而且PutLifecycleConfiguration管理Partner Connect和上传数据UI所使用的个人登台位置的生命周期策略。

  5. 将IAM策略关联到IAM角色。

    IAM角色的许可页签,将新建的IAM策略进行附加。

创建您的第一个metastore并附加一个工作区

要使用Unity Catalog,你必须创建一个metastore。metastore是Unity Catalog中数据的顶级容器。每个亚metastore公开一个三级名称空间(目录模式表格)用以组织资料。

您可以为组织运行的每个区域创建一个metastore。您可以将每个区域亚存储连接到该区域中的任意数量的工作空间。

每个链接的工作空间都具有metastore中相同的数据视图,并且可以跨工作空间管理数据访问控制。

您可以使用三角洲分享

产生亚转移瘤:

  1. 登录数据库账户控制台

  2. 点击数据图标数据

  3. 点击创建Metastore

    输入如下:

    • 亚转移瘤的名称。

    • 你想要部署亚转移瘤的区域。

      这必须与要用于访问数据的工作区位于同一区域。确保它与前面创建的存储桶的区域相匹配。

    • S3桶路径(您可以省略s3: / /)和IAM角色名在AWS中配置存储桶和IAM角色

  4. 点击创建

  5. 当出现提示时,选择要链接到metastore的工作区。

    有关将工作区分配给亚存储的更多信息,请参见为Unity Catalog启用一个工作区

创建metastore的用户是它的所有者,也称为metastore管理员。metastore管理员可以在metastore中创建顶级对象,例如目录,并可以管理对表和其他对象的访问。Databricks建议将metastore管理角色重新分配给一个组。看到(推荐)转移你的metastore的所有权到一个组

添加用户和组

一个Unity Catalog亚存储可以在多个Databricks工作区之间共享。Unity Catalog利用Databricks帐户级身份管理来提供跨所有工作空间的用户、服务主体和组的一致视图。在此步骤中,您将在帐户控制台中创建用户和组,然后选择这些身份可以访问的工作区。

请注意

  • 如果您有一个现有的帐户和工作区,那么您的帐户中可能已经有现有的用户和组,因此您可以跳过此步骤。

  • 如果您的帐户中有大量用户或组,或者您喜欢在Databricks之外管理身份,则可以这样做从您的身份提供者(IdP)同步用户和组

使用实例在帐户控制台中添加用户和组。

  1. 登录账户控制台(要求用户是帐户admin)。

  2. 点击Account控制台用户管理图标用户管理

  3. 添加用户:

    1. 点击用户

    2. 点击添加用户

    3. 为用户输入名称和电子邮件地址。

    4. 点击发送邀请

  4. 添加分组:

    1. 点击

    2. 点击添加组

    3. 输入组的名称。

    4. 点击确认

    5. 当出现提示时,将用户添加到组中。

  5. 将一个用户或组添加到工作区,在那里他们可以使用Unity Catalog管理的数据执行数据科学、数据工程和数据分析任务:

    1. 在侧栏中,单击工作空间的图标工作区

    2. 权限选项卡上,单击添加权限

    3. 搜索并选择用户或组,分配权限级别(工作区用户orgydF4y2Ba管理),并按保存

首先,创建一个名为数据使用者.这个组将在本演练的后面使用。

创建一个集群或SQL仓库

在Unity Catalog中定义的表受到细粒度访问控制的保护。为了确保执行访问控制,Unity Catalog要求计算资源符合安全配置。默认情况下,Unity Catalog是安全的,这意味着不符合要求的计算资源不能访问Unity Catalog中的表。

Databricks提供两种计算资源:

  • 集群,用于数据科学与工程和Databricks机器学习基于角色的环境中的工作负载。

  • SQL仓库,用于执行Databricks SQL中的查询。

你可以使用这些计算资源中的任何一个来与Unity Catalog一起工作,这取决于你正在使用的环境:用于Databricks的SQL仓库,用于数据科学与工程和Databricks机器学习环境的SQL或集群。

创建集群

创建一个可以访问Unity Catalog的集群:

  1. 以工作区管理员或用户身份登录到工作区创建集群权限

  2. 点击计算图标计算

  3. 点击创建计算

    1. 输入集群名称。

    2. 设置访问模式单用户

      只有单用户而且共享访问模式支持统一目录。看到什么是集群访问模式?

    3. Databricks运行时版本运行时:11.1 (Scala 2.12, Spark 3.2.1)或更高版本。

  4. 点击创建集群

有关具体配置选项,请参见创建集群

创建SQL仓库

默认情况下,SQL仓库支持Unity Catalog,不需要特殊配置。

创建SQL仓库:

  1. 以工作区管理员或用户身份登录到工作区创建集群权限

  2. 从角色切换器中选择SQL

  3. 点击创建并选择SQL仓库

有关具体配置选项,请参见创建SQL仓库

创建第一个表

在Unity Catalog中,metastore包含包含模式(数据库)的目录,你总是在模式中创建一个表。

你可以使用三级表示法来引用一个表:

<目录> . <模式> . <表格>

新创建的metastore包含一个名为主要使用一个名为默认的.在本例中,您将创建一个名为部门默认的中的模式主要目录。

要创建表,必须具有创建表格的父模式的权限使用目录父目录上的权限使用模式父模式上的权限。默认情况下,Metastore管理员拥有这些权限。

主要目录和main.default模式是唯一的,因为所有用户都以使用目录特权主要目录和使用模式特权main.default模式。如果您不是metastore管理员,则metastore管理员或模式所有者可以授予您权限创建表格特权main.default模式。

按照以下步骤手动创建表。您还可以导入一个例如笔记本电脑并运行它来创建目录、模式和表,并管理它们的权限。

  1. 创建一个笔记本并将其附加到中创建的集群创建一个集群或SQL仓库

    对于笔记本语言,选择SQLPythonR,或Scala,这取决于你想使用的语言。

  2. 对象上创建表的权限默认的模式。

    要创建表,用户需要创建表格而且使用模式模式上的权限使用目录目录上的权限。所有用户都会收到使用目录特权主要目录和使用模式特权main.default创建metastore时的模式。

    Metastore的管理员和模式的所有者main.default可以使用下面的命令来格兰特创建表格用户或组的特权:

    格兰特创建表格模式<目录-的名字><模式-的名字>' <EMAIL_ADDRESS>”
    火花sql“GRANT CREATE TABLE ON SCHEMA .” TO '  ' "
    图书馆SparkRsql“GRANT CREATE TABLE ON SCHEMA .” TO '  ' "
    火花sql“GRANT CREATE TABLE ON SCHEMA .” TO '  ' "

    例如,允许组的成员数据使用者中创建表main.default

    格兰特创建表格模式主要默认的数据-消费者
    火花sqlGRANT CREATE TABLE ON SCHEMA main.default为data-consumers
    图书馆SparkRsql"授权在SCHEMA main.default上创建表给'数据消费者' "
    火花sqlGRANT CREATE TABLE ON SCHEMA main.default为data-consumers

    运行单元格。

  3. 创建一个名为部门

    向笔记本添加一个新单元格。粘贴下列代码,其中指定表名及其列,并在其中插入5行。

    创建表格主要默认的部门deptcodeINTdeptname字符串位置字符串);插入主要默认的部门10“金融”“爱丁堡”),20.“软件”帕丁顿的),30.“销售”梅德斯通的),40“市场营销”达灵顿的),50“管理”“伯明翰”);
    pyspark.sql.types进口StructTypeStructFieldIntegerTypeStringType模式StructType([StructField“deptcode”IntegerType(),真正的),StructField“deptname”StringType(),真正的),StructField“位置”StringType(),真正的])火花目录不知道的表“main.default.department”模式模式dfInsert火花createDataFrame数据10“金融”“爱丁堡”),20.“软件”“帕丁顿”),30.“销售”“梅德斯通”),40“市场营销”“达灵顿”),50“ADMIN”“伯明翰”],模式模式dfInsertsaveAsTable的名字“main.default.department”模式“添加”
    图书馆SparkR模式structTypestructField“deptcode”“整数”真正的),structField“deptname”“字符串”真正的),structField“位置”“字符串”真正的dfcreateDataFrame数据列表(),模式模式saveAsTabledfdf的表“main.default.department”数据列表列表“deptcode”10 l“deptname”“金融”“位置”“爱丁堡”),列表“deptcode”20 l“deptname”“软件”“位置”“帕丁顿”),列表“deptcode”30升“deptname”“销售”“位置”“梅德斯通”),列表“deptcode”40 l“deptname”“市场营销”“位置”“达灵顿”),列表“deptcode”50 l“deptname”“ADMIN”“位置”“伯明翰”dfInsertcreateDataFrame数据数据模式模式insertIntoxdfInsert的表“main.default.department”
    进口火花值得一提的_进口orgapache火花sql类型StructType瓦尔df火花createDataFramejava跑龙套ArrayList) (),StructType()添加“deptcode”“int”添加“deptname”“字符串”添加“位置”“字符串”df格式“δ”saveAsTable“main.default.department”瓦尔dfInsertSeq10“金融”“爱丁堡”),20.“软件”“帕丁顿”),30.“销售”“梅德斯通”),40“市场营销”“达灵顿”),50“ADMIN”“伯明翰”).toDF“deptcode”“deptname”“位置”dfInsertinsertInto“main.default.department”

    运行单元格。

  4. 查询表格。

    向笔记本添加一个新单元格。粘贴以下代码,然后运行单元格。

    选择主要默认的部门
    显示火花表格“main.default.department”))
    显示tableToDF“main.default.department”))
    显示火花表格“main.default.department”))
  5. 类授予读取和查询表的能力数据使用者组中创建的添加用户和组

    添加一个新的单元格到笔记本,并粘贴以下代码:

    格兰特选择主要默认的部门数据-消费者
    火花sql“GRANT SELECT ON main.default.department TO ' data-consumers '”
    sql“GRANT SELECT ON main.default.department TO ' data-consumers '”
    火花sql“GRANT SELECT ON main.default.department TO ' data-consumers '”

    请注意

    向所有帐户级用户授予读访问权限,而不是仅授予读访问权限数据使用者,使用组名账户用户代替。

    运行单元格。

捷径:使用示例笔记本创建目录、模式和表

您可以使用下面的示例笔记本创建目录、模式和表,以及管理它们的权限。

使用SQL创建和管理一个Unity Catalog表

在新标签页打开笔记本

用Python创建和管理一个Unity Catalog表

在新标签页打开笔记本

(可选)安装Unity Catalog命令行

Unity Catalog CLI是砖CLI.要使用Unity Catalog命令行,请执行以下操作:

  1. 设置CLI

  2. 设置身份验证

  3. 可选地,创建一个或多个连接配置文件在CLI下使用。

  4. 学习如何使用Databricks命令行一般来说。

  5. 开始使用Unity Catalog命令行

下一个步骤