開始
加載和管理數據
處理數據
政府
引用和資源
2023年3月30日更新
給我們反饋
本文介紹了外部位置和存儲憑證並解釋如何創建和使用它們來管理訪問你的數據。
外部位置和存儲憑證允許統一目錄讀取和寫入數據雲租戶代表用戶。使用這些對象:
創建、閱讀和寫作外部表。
覆蓋metastore的默認管理表在目錄或模式級別存儲位置。
創建一個從文件管理或外部表存儲在雲的房客。
插入記錄到表的文件存儲在雲的房客。
直接探索數據文件存儲在雲的房客。
一個存儲憑證代表的身份驗證和授權機製訪問數據存儲在雲租戶,使用我的角色。每個存儲憑證須統一目錄訪問控製政策,控製哪些用戶和組可以訪問憑據。如果一個用戶沒有訪問存儲憑證統一目錄,請求失敗和統一目錄不嚐試驗證您的雲代表用戶的租戶。
一個外部位置是一個對象,結合了雲存儲路徑和存儲憑證授權訪問雲存儲路徑。每個存儲位置是受統一目錄訪問控製政策,控製哪些用戶和組可以訪問憑據。如果用戶沒有訪問的存儲位置統一目錄,請求失敗和統一目錄不嚐試驗證您的雲代表用戶的租戶。
請注意
盡管這個名字“外部”這個詞,可以使用外部位置不僅為外部表定義存儲位置,而且對管理表。具體來說,它們可以被用來定義存儲位置管理表的目錄和模式層麵,覆蓋metastore根存儲位置。看到創建目錄和創建模式。
磚建議使用外部的位置而不是直接使用存儲憑證。
創建存儲憑證,你一定是一個磚賬戶管理。的帳戶管理創建存儲憑證可以將所有權委托給另一個用戶或組的管理權限。
創建外部位置,你必須是一個metastore管理員或用戶創建外部位置特權。
創建外部位置
S3 bucket的名稱,你想要的用戶讀和寫不能使用點符號(例如,incorrect.bucket.name.notation)。更多桶命名的指導,請參閱AWS桶命名規則。
incorrect.bucket.name.notation
以下小節將展示如何創建和管理存儲憑證。
創建一個存儲憑證,您需要一個我的角色授權讀取或寫入一個S3 bucket的道路。你參考我的角色當您創建存儲憑證。
在AWS,創建了我的角色,讓訪問S3 bucket,你想讓你的用戶訪問。這我的角色必須定義在同一個賬戶S3 bucket。
提示
如果您已經創建了一個提供這種訪問我的角色,你可以跳過這一步,直接進入步驟2:給出磚我角色的細節。
創建了我的角色,將允許訪問S3 bucket。
角色創建是一個兩步的過程。在此步驟中,我們簡單地創建這個角色,添加一個臨時信任關係的政策,然後在下一步中修改。你必須修改信任策略後創建角色,因為你的角色必須self-assuming-that,必須配置為信任本身。這個角色之前必須存在添加self-assumption語句。self-assuming角色的信息,請參閱亞馬遜的博客文章。
創建我的角色自定義信任策略。
在自定義信任策略場,粘貼以下政策JSON,更換< DATABRICKS_ACCOUNT_ID >你的磚帳戶ID。
< DATABRICKS_ACCOUNT_ID >
讓你的磚帳戶ID,看到的第一步在AWS配置存儲桶和我的角色。
這項政策建立cross-account信任關係,以便統一目錄可以假設角色訪問桶中的數據代表磚用戶。這是指定的攻擊主要部分。它是一個靜態值引用一個角色由磚。不要修改它。
主要
{“版本”:“2012-10-17”,“聲明”:[{“效應”:“允許”,“校長”:{“AWS”:(“攻擊:aws:我::123456767826:角色/ unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL”]},“行動”:“sts: AssumeRole”,“條件”:{“StringEquals”:{“sts: ExternalId”:“< DATABRICKS_ACCOUNT_ID >”}}})}
跳過的權限策略配置。你會回到添加在後麵的步驟。
拯救我的角色。
修改政策的信任關係,使其“self-assuming。”
回到你救了我的角色,去信任關係選項卡。
編輯信任關係政策,以下是“允許”的聲明。
取代< YOUR_AWS_ACCOUNT_ID >和< THIS_ROLE_NAME >與你的實際值我的角色。
< YOUR_AWS_ACCOUNT_ID >
< THIS_ROLE_NAME >
“攻擊:aws:我::< YOUR_AWS_ACCOUNT_ID >: / < THIS_ROLE_NAME >”角色
你們的政策現在應該是這個樣子(替換文本更新使用你的磚帳戶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 >”}}}]}
創建以下我政策在同一賬戶S3 bucket,替換以下值:
<桶>:S3 bucket的名稱。
<桶>
< KMS_KEY >:可選的。如果啟用了加密,提供的名稱公裏密鑰進行加密S3 bucket的內容。如果加密被禁用,刪除我的整個公裏部分政策。
< KMS_KEY >
< AWS_ACCOUNT_ID >:你的帳戶ID AWS帳戶(不是你的磚賬戶)。
< AWS_ACCOUNT_ID >
< AWS_IAM_ROLE_NAME >:AWS的名字我您在前麵步驟中創建的角色。
< AWS_IAM_ROLE_NAME >
{“版本”:“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 >”角色),“效應”:“允許”}]}
如果你需要我更具限製性的政策,統一編目,聯係你的磚代表的援助。
磚使用GetLifecycleConfiguration和PutLifecycleConfiguration管理生命周期策略合作夥伴連接所使用的個人舉辦地點和上傳數據的UI。
GetLifecycleConfiguration
PutLifecycleConfiguration
把我的政策我的角色。
在角色的許可選項卡,把我剛才創建的政策。
在磚,登錄到一個工作區metastore有關。
點擊數據。
在屏幕的底部,點擊存儲憑證。
點擊+添加>添加存儲憑證。
輸入憑證的名稱,我的角色是授權統一目錄訪問雲租戶存儲位置,和一個可選的評論。
如果您已經定義了一個實例配置文件在磚,你可以點擊實例配置文件副本複製在我的角色攻擊實例配置文件。實例配置文件我的角色必須有一個cross-account信任關係,使磚承擔的角色為了訪問桶代表磚用戶。關於我的角色的更多信息政策和信任關係的需求,明白了步驟1:創建一個我的角色。
點擊保存。
創建一個外部位置引用這個存儲憑證。
您還可以創建一個存儲憑證使用磚起程拓殖的提供者和databricks_storage_credential。
查看所有存儲的列表metastore憑證,您可以使用數據瀏覽器或SQL命令。
登錄到一個工作區metastore有關。
運行以下命令在筆記本或磚的SQL編輯器。
顯示存儲憑證;
運行以下命令在一個筆記本上。
顯示(火花。sql(“顯示存儲憑證”))
圖書館(SparkR)顯示(sql(“顯示存儲憑證”))
查看存儲證書的屬性,您可以使用數據瀏覽器或SQL命令。
單擊存儲憑證的名稱查看其屬性。
運行以下命令在筆記本或磚的SQL編輯器。取代< credential_name >憑證的名稱。
< credential_name >
描述存儲憑證<credential_name>;
運行以下命令在一個筆記本上。取代< credential_name >憑證的名稱。
顯示(火花。sql(“描述存儲憑證< credential_name >”))
圖書館(SparkR)顯示(sql(“描述存儲憑證< credential_name >”))
重命名一個存儲憑證,您可以使用數據瀏覽或SQL命令。
點擊存儲憑證的名稱打開編輯對話框。
重命名存儲憑證並保存它。
運行以下命令在筆記本或磚的SQL編輯器。替換占位符的值:
< credential_name >:憑證的名稱。
< new_credential_name >證書:一個新名字。
< new_credential_name >
改變存儲憑證<credential_name>重命名來<new_credential_name>;
運行以下命令在一個筆記本上。替換占位符的值:
火花。sql(“改變存儲憑證< credential_name > < new_credential_name >重命名”)
圖書館(SparkR)sql(“改變存儲憑證< credential_name > < new_credential_name >重命名”)
您可以授予權限直接在存儲憑證,但磚建議你參考的外部位置和授予權限。外部位置結合存儲憑證與一個特定的路徑,隻和授權訪問路徑和它的內容。
你可以管理權限存儲憑證使用數據瀏覽磚CLI,筆記本或磚SQL查詢的SQL命令,或起程拓殖。你可以grant和revoke以下權限存儲憑證:
創建表
讀文件
寫文件
在下麵的例子中,替換占位符的值:
<主要>:電子郵件地址的帳戶級別用戶或帳戶的名稱級別組授予許可。
<主要>
< storage_credential_name >:存儲憑證的名稱。
< storage_credential_name >
資助的節目一個存儲憑證,使用一個命令如下。您可以選擇過濾結果隻顯示指定的資金本金。
顯示獎助金(<主要>]在存儲憑證<storage_credential_name>;
顯示(火花。sql(“撥款(<校長>)的節目存儲憑證< storage_credential_name >”))
圖書館(SparkR)顯示(sql(“撥款(<校長>)的節目存儲憑證< storage_credential_name >”))
允許創建外部表直接使用存儲憑證:
格蘭特創建外部表在存儲憑證<storage_credential_name>來<主要>;
火花。sql(“格蘭特創建外部表存儲憑證< storage_credential_name > <校長>”)
圖書館(SparkR)sql(“格蘭特創建外部表存儲憑證< storage_credential_name > <校長>”)
允許選擇從外部表直接使用存儲憑證:
格蘭特讀文件在存儲憑證<storage_credential_name>來<主要>;
火花。sql(“格蘭特讀文件存儲憑證< storage_credential_name > <校長>”)
圖書館(SparkR)sql(“格蘭特讀文件存儲憑證< storage_credential_name > <校長>”)
如果一個組名稱包含一個空間,使用反勾號周圍(不是撇號)。
一個存儲憑證的創造者是最初的主人。改變老板到另一個帳戶級別用戶或組,執行以下操作:
<主要>:一個戶頭級別用戶的電子郵件地址或一個戶頭級別組的名稱。
改變存儲憑證<credential_name>老板來<主要>;
火花。sql(“改變存儲憑證< credential_name >所有者<校長>”)
圖書館(SparkR)sql(“改變存儲憑證< credential_name >所有者<校長>”)
刪除(下降)存儲憑證你一定是它的主人。刪除存儲憑證,您可以使用數據瀏覽或SQL命令。
單擊刪除按鈕。
運行以下命令在筆記本或磚的SQL編輯器。取代< credential_name >憑證的名稱。部分的命令在括號中是可選的。默認情況下,如果外部位置使用的憑據,不刪除。取代< credential_name >憑證的名稱。
如果存在不返回一個錯誤,如果證書不存在。
如果存在
下降存儲憑證(如果存在]<credential_name>;
運行以下命令在一個筆記本上。取代< credential_name >憑證的名稱。部分的命令在括號中是可選的。默認情況下,如果外部位置使用的憑據,不刪除。取代< credential_name >憑證的名稱。
火花。sql(“減少存儲憑證(如果存在)< credential_name >”)
圖書館(SparkR)sql(“減少存儲憑證(如果存在)< credential_name >”)
下麵的章節說明如何創建和管理外部的位置。
您可以創建一個外部位置使用數據瀏覽磚CLI,筆記本或磚SQL查詢的SQL命令,或起程拓殖。
運行以下SQL命令在筆記本或磚的SQL編輯器。替換占位符的值:
< location_name >:外部位置的名稱。
< location_name >
< bucket_path >:雲租戶的路徑,這個外部位置授予訪問權。
< bucket_path >
< storage_credential_name >:存儲證書的名字包含了我的角色是,授權讀取或寫入S3 bucket。
每個雲存儲路徑可以隻有一個外部位置相關聯。如果您嚐試創建第二個外部位置引用相同的路徑,命令失敗。
創建外部位置(如果不存在]<location_name>URL“s3: / / < bucket_path >”與([存儲]憑證<storage_credential_name>)(評論<comment_string>];
火花。sql(“創建外部位置(如果不存在)< location_name >””URL s3: / / < bucket_path >””((存儲)憑證< storage_credential_name >)”“[評論< comment_string >]”)
圖書館(SparkR)sql(粘貼(“創建外部位置(如果不存在)< location_name >”,”URL s3: / / < bucket_path >”,”((存儲)憑證< storage_credential_name >)”,“[評論< comment_string >]”,9月=”“))
火花。sql(“創建外部位置(如果不存在)< location_name >”+”URL s3: / / < bucket_path >”+”((存儲)憑證< storage_credential_name >)”+“[評論< comment_string >]”)
看到外部位置的屬性,您可以使用數據瀏覽器或SQL命令。
在屏幕的底部,點擊外部位置。
點擊外部位置的名稱查看它的屬性。
描述外部位置<location_name>;
顯示(火花。sql(“描述外部位置< location_name >”))
圖書館(SparkR)顯示(sql(“描述外部位置< location_name >”))
外部位置的所有者可以重命名,改變URI,改變外部存儲憑證的位置。
重命名一個外部位置,請執行以下操作:
< location_name >:位置的名稱。
< new_location_name >位置:一個新名字。
< new_location_name >
改變外部位置<location_name>重命名來<new_location_name>;
火花。sql(“改變外部位置< location_name > < new_location_name >重命名”)
圖書館(SparkR)sql(“改變外部位置< location_name > < new_location_name >重命名”)
改變外部位置的URI指向雲租戶,做到以下幾點:
< url >:新存儲URL位置應該在雲租戶授權訪問。
< url >
改變外部位置location_name集URL' <url> '(力];
火花。sql(“改變外部位置location_name設置URL < URL >[力量]”)
圖書館(SparkR)sql(“改變外部位置location_name設置URL < URL >[力量]”)
的力選擇更改URL即使外部表依賴外部的位置。
力
改變外部位置使用的存儲憑證,做到以下幾點:
< credential_name >:存儲證書,授予訪問權限的名稱在雲租戶的URL位置。
改變外部位置<location_name>集存儲憑證<credential_name>;
火花。sql(“改變外部位置< location_name >設置存儲憑證< credential_name >”)
圖書館(SparkR)sql(“改變外部位置< location_name >設置存儲憑證< credential_name >”)
您可以grant和revoke以下權限使用外部位置數據瀏覽磚CLI,筆記本或磚SQL查詢的SQL命令,或起程拓殖:
< location_name >:外部位置的名稱授權讀取或寫入的S3 bucket雲租戶。
給授予在外部位置,使用一個命令如下。您可以選擇過濾結果隻顯示指定的資金本金。
顯示獎助金(<主要>]在外部位置<location_name>;
顯示(火花。sql(“顯示授予<校長>外部位置< location_name >”))
圖書館(SparkR)顯示(sql(“顯示授予<校長>外部位置< location_name >”))
允許使用一個外部位置創建一個表:
格蘭特創建外部表在外部位置<location_name>來<主要>;
火花。sql(“格蘭特創建外部表外部位置< location_name > <校長>”)
圖書館(SparkR)sql(“格蘭特創建外部表外部位置< location_name > <校長>”)
允許從外部讀取文件位置:
格蘭特讀文件在外部位置<location_name>來<主要>;
火花。sql(“格蘭特讀取外部文件位置< location_name > <校長>”)
圖書館(SparkR)sql(“格蘭特讀取外部文件位置< location_name > <校長>”)
外部位置的創造者是最初的主人。改變老板到另一個帳戶級別用戶或組,運行以下命令在筆記本或磚的SQL編輯器或者使用數據瀏覽。替換占位符的值:
< location_name >:憑證的名稱。
改變外部位置<location_name>老板來<主要>
刪除(下降)外部位置你一定是它的主人。刪除外部位置,請執行以下操作:
運行以下命令在筆記本或磚的SQL編輯器。物品在括號中是可選的。取代< location_name >與外部位置的名稱。
下降外部位置(如果存在]<location_name>;
運行以下命令在一個筆記本上。物品在括號中是可選的。取代< location_name >與外部位置的名稱。
火花。sql(“減少外部位置(如果存在)< location_name >”)
圖書館(SparkR)sql(“減少外部位置(如果存在)< location_name >”)
創建視圖