開始使用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是數據庫命令行設置和文檔.要使用Unity Catalog命令行,請執行以下操作:

  1. 設置CLI

  2. 設置身份驗證

  3. 可選地,創建一個或多個連接配置文件在CLI下使用。

  4. 學習如何使用Databricks命令行一般來說。

  5. 開始使用Unity Catalog命令行

下一個步驟