使用增量共享(預覽)共享數據<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#share-data-using-delta-sharing-preview" title="">
預覽
Delta共享開始了<一個class="reference internal" href="//www.eheci.com/docs/docs/release-notes/release-types.html">公共預覽.要參與預覽,必須在Databricks帳戶控製台中啟用外部數據共享特性組。看到<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#enable-feature-group">為您的帳戶啟用外部數據共享特性組.
Delta分成需另加費用<一個class="reference external" href="//www.eheci.com/docs/service-specific-terms">服務具體條款一個>.啟用外部數據共享特性組表示接受這些服務條款。
共享數據不是由Databricks直接提供的,而是由運行在Databricks上的數據提供程序提供的。
請注意
通過以數據接收方的身份訪問數據提供方的共享數據,數據接收方表示其已被授權訪問數據提供方提供給其的數據共享,並承認(1)Databricks對該等數據或數據接收方對該等共享數據的使用不承擔任何責任。(2) Databricks可收集有關數據接收者使用和訪問共享數據的信息(包括識別使用與該等信息相關的憑據文件訪問數據的任何個人或公司),並可與適用的數據提供者共享該等信息。
這篇文章展示了如何在Unity Catalog中與組織外部的數據接收者共享數據。如果您是數據接收方,請參見<一個class="reference internal" href="//www.eheci.com/docs/docs/data-sharing/delta-sharing/recipient.html">使用Delta Sharing訪問與您共享的數據.
需求<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#requirements" title="">
必須啟用Unity Catalog,並且必須至少存在一個metastore。
隻有帳戶管理員可以啟用Delta共享轉移瘤。
隻有metastore管理員或帳戶管理員可以使用Delta Sharing共享數據。看到<一個class="reference internal" href="//www.eheci.com/docs/docs/data-governance/unity-catalog/key-concepts.html">Metastore管理.
要旋轉收件人的證書,你必須使用Unity Catalog CLI。看到<一個class="reference internal" href="//www.eheci.com/docs/docs/data-governance/unity-catalog/get-started.html">(可選)安裝Unity Catalog命令行.
要管理共享和收件人,您可以使用數據科學與工程筆記本或Databricks SQL查詢。
關鍵概念<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#key-concepts" title="">
在Delta Sharing中,a分享要與一個或多個收件人共享的表和表分區的隻讀集合。一個metastore可以有多個share,你可以控製哪個接收者可以訪問每個share。單個metastore可以包含多個share,但是每個share隻能屬於一個metastore。如果刪除一個共享,該共享的所有收件人將失去訪問它的能力。
一個收件人是將組織與允許該組織訪問一個或多個共享的憑據關聯的對象。創建收件人時,將為該收件人生成可下載的憑據。每個轉移體可以有多個受體,但每個受體隻能屬於一個轉移體。一個收件人可以訪問多個共享。如果刪除一個收件人,該收件人將失去對它以前可以訪問的所有共享的訪問權。
共享和接收方彼此獨立存在。
要授予接收方對共享的訪問權限,您需要:
通過加入Delta共享公共預覽<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#enable-feature-group">啟用外部數據共享特性組下載您的Databricks帳戶。
創建一個共享與轉移瘤中的一個或多個表相關聯。
創建一個收件人.為該收件人生成一組憑據。
授予接收者特權一個或多個股票。
使用安全通道,向收件人發送一個激活鏈接,允許他們下載他們的憑證。
收件人使用憑據來<一個class="reference internal" href="//www.eheci.com/docs/docs/data-sharing/delta-sharing/recipient.html">訪問共享.
以下部分展示如何為Databricks帳戶啟用Delta共享、在metastore上啟用Delta共享、管理共享和接收方以及審計Delta共享活動。
為您的帳戶啟用外部數據共享特性組<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#enable-the-external-data-sharing-feature-group-for-your-account" title="">
要參加Delta共享公共預覽,帳戶管理員必須為您的Databricks帳戶啟用外部數據共享特性組。啟用此特性組表示接受附加特性組<一個class="reference external" href="//www.eheci.com/docs/service-specific-terms">服務具體條款一個>.
以“Databricks”帳號admin登錄<一個class="reference external" href="//www.eheci.com/accounts.cloud/login">賬戶控製台一個>.
在側邊欄中,單擊設置.
去功能實現選項卡。
在外部數據共享特性組行,單擊啟用按鈕。
單擊條款鏈接查看Delta Sharing的附加服務特定條款。點擊啟用代表接受這些條款。
在轉移瘤上啟用Delta Sharing<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#enable-delta-sharing-on-a-metastore" title="">
對於你計劃使用增量共享共享數據的每個亞穩態,遵循以下步驟。
登錄<一個class="reference external" href="//www.eheci.com/accounts.cloud/">賬戶控製台一個>.
在側邊欄中,單擊數據.
點擊一個metastore的名字打開它的詳細信息。
單擊旁邊的複選框啟用Delta共享並允許Databricks用戶在其組織外部共享數據.
Databricks建議您配置默認的收件人令牌存活時間。這是收件人令牌過期後必須重新生成的時間。如果不配置此設置,則接收令牌不會過期。
當您更改默認的收件人生存期時,現有收件人的收件人令牌生存期不會自動更新。若要更新給定收件人的收件人令牌生存期,請參見<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#rotate-a-recipients-credential">輪換收件人的證書.
配置默認的接收令牌存活時間。
啟用設置過期.
輸入秒、分、小時或天的數字,並選擇度量單位。
點擊啟用.
有關更多信息,請參見<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#security-recommendations-for-recipients">給收件人的安全建議.
(可選)安裝Unity Catalog命令行<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#optional-install-the-unity-catalog-cli" title="">
要管理共享和收件人,您可以使用SQL命令或Unity Catalog CLI。CLI運行在本地環境,不需要Databricks的計算資源。
安裝命令行,請參見<一個class="reference internal" href="//www.eheci.com/docs/docs/data-governance/unity-catalog/get-started.html">(可選)安裝Unity Catalog命令行在Unity Catalog文檔中。
修改接收令牌存活時間<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#modify-the-recipient-token-lifetime" title="">
當啟用Delta Sharing時,按照以下步驟修改默認的收件人令牌生存期。
請注意
當您更改一個轉移的默認收件人令牌生存期時,現有收件人的收件人令牌生存期不會自動更新。若要更新給定收件人的收件人令牌生存期,請參見<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#rotate-a-recipients-credential">輪換收件人的證書.
登錄<一個class="reference external" href="//www.eheci.com/accounts.cloud/">賬戶控製台一個>.
在側邊欄中,單擊數據.
點擊一個metastore的名字打開它的詳細信息。
啟用設置過期.
輸入秒、分、小時或天的數字,並選擇度量單位。
點擊啟用.
如果禁用設置過期,接收令牌不會過期。有關更多信息,請參見<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#security-recommendations-for-recipients">給收件人的安全建議.
管理股票<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#manage-shares" title="">
在Delta Sharing中,a分享是一個命名對象,該對象包含要作為組共享的亞轉移中的表集合。一個share隻能包含來自一個metastore的表。您可以隨時從共享中添加或刪除表。
下麵幾節介紹如何創建、描述、更新和刪除共享。
創建一個共享<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#create-a-share" title="">
要創建共享,請在筆記本電腦或Databricks SQL編輯器中運行以下命令。替換占位符值:
< share_name >
:共享的描述性名稱。< >的評論
:描述共享的注釋。
創建分享[如果不存在]<share_name>[評論<評論>];
在創建共享之後,您可以這樣做<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#add-or-remove-tables-from-a-share">向它添加表並將它與一個或多個關聯起來<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#manage-recipients">收件人.
上市<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#list-shares" title="">
要列出所有的共享,請使用顯示股票
命令。
顯示股票;
描述一個分享<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#describe-a-share" title="">
方法列出共享的元數據和與共享關聯的所有表描述分享
命令。取代< share_name >
加上共享的名稱:
描述分享<share_name>;
方法列出共享中的所有表顯示所有在股票
命令。
顯示所有在分享<share_name>;
從共享中添加或刪除表<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#add-or-remove-tables-from-a-share" title="">
在以下命令中替換占位符值:
< share_name >
:共享的名稱。< catalog_name >
:轉移體中目錄的名稱。< schema_name >
:轉移體中的模式名稱。< table_name >
:要添加的表的名稱。作為< new_schema_name。< new_table_name >
:可選地使用新名稱共享表。< >的評論
:描述共享的注釋。
方法將表與共享關聯改變分享添加表格
命令。
改變分享<share_name>添加表格<catalog_name>.<schema_name>.<table_name>[deltaSharingPartitionListSpec][作為<new_schema_name.<new_table_name>][評論<評論>];
關於共享分區的詳細信息,請參見<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#partition-specifications">分區規範.
要從共享中刪除表,請使用改變分享刪除表格
命令。
改變分享<share_name>刪除表格<catalog_name>.<schema_name>.<table_name>;
請注意
您可以在轉移中提供原始模式和表名,也可以在共享中提供定義的名稱。
在共享中添加或刪除表時,更改將在收件人下次訪問該共享時生效。
分區規範<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#partition-specifications" title="">
在將表添加到共享時,為了隻共享表的一部分,可以提供分區規範。中的部分數據庫存
表,假設表是由一年
,月
,日期
列。
2021年的數據。
2020年12月數據。
2019年12月25日數據。
改變分享share_name添加表格庫存分區(一年=“2021”),(一年=“2020”,月=“12月”),(一年=“2019”,月=“12月”,日期=“2019-12-25”);
刪除一個分享<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#delete-a-share" title="">
刪除共享時,使用下降分享
命令。收件人不能再訪問以前共享的數據。取代< share_name >
加上股份的名稱。
下降分享[如果存在]<share_name>;
管理接受者<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#manage-recipients" title="">
接收方是一組命名的憑據,它表示要與之共享數據的組織。本節展示如何在Delta Sharing中管理收件人。
創建一個收件人<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#create-a-recipient" title="">
使用創建收件人
命令,創建收件人。替換占位符值:
< recipient_ >
:收件人的描述性名稱。< >的評論
:提供更多信息的評論。
創建收件人[如果不存在]<recipient_name>評論<評論>
接收方的令牌將在<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#modify-the-recipient-token-lifetime">收件人標記一生消逝的時光。有關更多信息,請參見<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#security-recommendations-for-recipients">給收件人的安全建議.
創建收件人後:
使用<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#describe-a-recipient">'描述'命令獲得激活鏈接。
使用安全通道與他們共享激活鏈接,以及<一個class="reference internal" href="//www.eheci.com/docs/docs/data-sharing/delta-sharing/recipient.html">介紹如何訪問共享數據的文章.激活鏈接隻能被訪問一次。接收方應將下載的憑據視為機密,不得將其共享到組織外部。如果有必要,你可以這麼做<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#rotate-credential">輪換收件人的證書.
收件人列表<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#list-recipients" title="">
的顯示收件人
命令列出所有收件人。可選地,取代< >模式
與一個<一個class="reference internal" href="//www.eheci.com/docs/docs/spark/latest/spark-sql/language-manual/functions/like.html">“喜歡”謂詞.
顯示收件人[就像<模式>];
描述一個收件人<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#describe-a-recipient" title="">
要查看收件人的詳細信息,包括其創建者、創建時間戳、令牌生存期、激活鏈接以及是否已下載憑據,請使用描述收件人
命令。取代< recipient_name >
還有收信人的名字。
描述收件人<recipient_name>;
要顯示贈款給受贈人,請參見<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#manage-privileges-for-a-recipient">管理收件人的權限.
刪除一個收件人<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#delete-a-recipient" title="">
要刪除收件人,請使用下降收件人
命令。取代< recipient_name >
加上收件人的名字。刪除收件人時,憑據將失效,收件人將無法再查看共享。
下降收件人[如果存在]<recipient_name>
輪換收件人的證書<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#rotate-a-recipients-credential" title="">
您應該旋轉收件人的憑據並生成一個新的激活鏈接:
當現有的收件人令牌即將過期時。
如果收件人丟失了他們的激活URL或它被泄露。
如果在接收方下載憑據後,憑據被損壞、丟失或損壞。
更新您之後接收者的令牌生存期<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#modify-the-recipient-token-lifetime">修改接收令牌存活時間metastore。
如果你還沒有這麼做,<一個class="reference internal" href="//www.eheci.com/docs/docs/data-governance/unity-catalog/get-started.html">安裝Unity Catalog命令行.
使用Unity Catalog命令行執行以下命令。括號中的參數是可選的。替換占位符值:
< recipient_name >
:收件人的姓名。< expiration_seconds >
:可選的。到現有的收件人令牌應該過期的秒數。在此期間,現有的令牌將繼續工作。的值0
意味著現有的令牌立即過期。加州大學rotate-recipient-token\——名稱< recipient_name >\[——existing-token-expire-in-seconds < expiration_seconds >]
控件查看激活URL
描述收件人< recipient_name >
命令,並通過安全通道與接收方共享。
管理收件人的權限<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#manage-privileges-for-a-recipient" title="">
創建共享和收件人後,使用格蘭特
而且撤銷
語句授予接收方對共享的訪問權限。在以下示例中,替換占位符值:
< share_name >
:共享名稱。< recipient_name >
:收件人的姓名
顯示某一股的所有授予:
顯示格蘭特在分享<share_name>;
查詢指定受助人的所有獎助金。
顯示格蘭特來收件人<recipient_name>;
授權訪問:
格蘭特選擇在分享<share_name>來收件人<recipient_name>;
撤銷訪問:
撤銷選擇在分享<share_name>從收件人<recipient_name>;
請注意
選擇
是你唯一可以授予股份的特權。
給收件人的安全建議<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#security-recommendations-for-recipients" title="">
當你<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#enable">啟用三角洲共享,為收件人憑據配置令牌生存期。如果將令牌生存期設置為0
,接收令牌永遠不會過期。Databricks建議您將令牌配置為過期。
在以下情況下,您應該輪換收件人的證書:
當現有的收件人令牌即將過期時。
如果你<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#modify-the-recipient-token-lifetime">修改接收令牌存活時間並且希望將新的生存期應用到現有的收件人。
如果收件人丟失了他們的激活URL或它被泄露。
更新您之後接收者的令牌生存期<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#modify-the-recipient-token-lifetime">修改接收令牌存活時間.
在任何給定的時間,一個接收者最多可以有兩個令牌:一個活動令牌和一個旋轉令牌。在旋轉的令牌過期之前,試圖再次旋轉令牌會導致錯誤。
當您旋轉收件人的憑據時,您可以選擇設置——existing-token-expire-in-seconds
到現有的接收方令牌過期前的秒數。如果將該值設置為0
,現有的接收令牌立即過期。
Databricks建議您設置——existing-token-expire-in-seconds
縮短到相對較短的時間段,使接收組織有時間訪問新的激活URL,同時最小化接收方擁有兩個活動令牌的時間。如果您懷疑收件人令牌已經泄露,Databricks建議您強製現有的收件人令牌立即過期。
如果從未訪問過收件人的現有激活URL,也沒有旋轉收件人,則旋轉收件人將使現有激活URL無效,並用新URL替換它。
如果所有的收件人令牌都已過期,旋轉收件人將用新的激活URL替換現有的激活URL。Databricks建議您立即旋轉或刪除令牌過期的收件人。
如果收件人激活鏈接無意中發送給了錯誤的人或通過不安全的通道發送,Databricks建議您:
旋轉收件人並設置
——existing-token-expire-in-seconds
來0
.通過安全通道與預期的收件人共享新的激活鏈接。
在激活URL被訪問之後,再次授予收件人對共享的訪問權限。
在極端情況下,Databricks建議您<一個class="reference internal" href="//www.eheci.com/docs/data-sharing/delta-sharing/#delete-a-recipient">下降然後重新創建收件人。
對Delta共享資源的訪問和活動進行審計<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#audit-access-and-activity-for-delta-sharing-resources" title="">
在你<一個class="reference internal" href="//www.eheci.com/docs/docs/administration-guide/account-settings/audit-logs.html">配置審計日誌記錄, Delta Sharing為以下活動保存審計日誌:當某人創建、修改、更新或刪除共享或收件人時,當收件人訪問激活鏈接並下載憑據時,或當收件人的憑據旋轉或過期時。Delta共享活動在帳戶級別記錄。
使審計日誌為您的帳戶。
重要的
Delta共享活動在帳戶級別記錄。不輸入值
workspace_ids_filter
.審計日誌為您帳戶中的每個工作空間以及帳戶級別的活動交付。日誌下發到配置的S3桶中。
記錄Delta共享的事件
名
設置為unityCatalog
.的requestParams
節中每個事件都包含一個delta_sharing
前綴。例如,下麵的審計事件顯示了對收件人令牌生存期的更新。在本例中,編校值被替換為
> <修訂
.{“版本”:“2.0”,“auditLevel”:“ACCOUNT_LEVEL”,“時間戳”:1629775584891,“orgId”:“3049059095686970”,“shardName”:“示例工作空間”,“accountId”:“> <修訂”,“sourceIPAddress”:“> <修訂”,“userAgent”:“旋度/ 7.64.1”,“sessionId”:“> <修訂”,“userIdentity”: {“電子郵件”:“> <修訂”,“subjectName”:零},“名”:“unityCatalog”,“actionName”:“updateMetastore”,“requestId”:“> <修訂”,“requestParams”: {“id”:“> <修訂”,“delta_sharing_enabled”:“真正的”“delta_sharing_recipient_token_lifetime_in_seconds”:31536000},“響應”: {“statusCode”:200,“errorMessage”:零,“結果”:零},“MAX_LOG_MESSAGE_LENGTH”:16384}
下表從數據提供程序的角度列出了Delta Sharing的審計事件。
請注意
以下重要字段在審計日誌中始終存在:
userIdentity.email
:發起該活動的用戶ID。requestParams.id
: Unity Catalog轉移。
actionName |
requestParams |
---|---|
|
|
|
|
|
|
|
|
|
沒有一個 |
|
|
|
|
|
|
|
|
|
|
|
沒有一個 |
|
|
|
|
|
|
|
|
|
|
|
|
從數據接收方的角度來看,記錄以下Delta共享錯誤。項目之間<
而且>
字符表示占位符文本。
在選定的亞轉移上沒有啟用增量共享。
DatabricksServiceException: FEATURE_DISABLED: Delta Sharing is not enabled '
試圖對不存在的目錄執行操作。
目錄“xxx”不存在。
非帳戶管理員或非轉移管理員的用戶試圖執行特權操作。
DatabricksServiceException:PERMISSION_DENIED:隻有管理員可以<operation_name><operation_target>
從未分配給該轉移瘤的工作空間對該轉移瘤進行了操作。
DatabricksServiceException:INVALID_STATE:工作空間<workspace_name>是沒有長分配來這metastore
請求缺少收件人名稱或共享名稱。
DatabricksServiceException:INVALID_PARAMETER_VALUE:CreateRecipient/CreateShare失蹤要求場:<recipient_name>/<share_name>
請求包含無效的收件人名稱或共享名稱。
DatabricksServiceException:INVALID_PARAMETER_VALUE:CreateRecipient/CreateShare<recipient_name>/<share_name>是不一個有效的的名字
DatabricksServiceException:INVALID_PARAMETER_VALUE:隻有管理或外部表格在團結目錄可以是添加來一個份額。
用戶試圖共享一個不在Unity Catalog轉移庫中的表。
DatabricksServiceException:INVALID_PARAMETER_VALUE:在那裏是已經兩個活躍的令牌為收件人< recipient_name >。
用戶試圖旋轉已處於旋轉狀態且其上一個令牌尚未過期的收件人。
DatabricksServiceException:RECIPIENT_ALREADY_EXISTS / SHARE_ALREADY_EXISTS:收件人/分享<名稱>已經存在
用戶試圖創建與已有名稱相同的新收件人或共享。
DatabricksServiceException:RECIPIENT_DOES_NOT_EXIST / SHARE_DOES_NOT_EXIST:收件人/分享“<名稱>”做不存在。
用戶試圖對不存在的收件人或共享執行操作。處理步驟
DatabricksServiceException:RESOURCE_ALREADY_EXISTS:共享表格“<名稱>”已經的存在。
用戶試圖向共享添加表,但該表已被添加。
DatabricksServiceException:TABLE_DOES_NOT_EXIST:表格“<名稱>”做不存在。
用戶試圖執行引用不存在的表的操作。
DatabricksServiceException:SCHEMA_DOES_NOT_EXIST:模式“<名稱>”做不存在。
用戶試圖執行引用不存在的模式的操作。
有關數據接收者的可審計事件和錯誤,請參見<一個class="reference internal" href="//www.eheci.com/docs/docs/data-sharing/delta-sharing/recipient.html">對Delta共享資源的訪問和活動進行審計.
限製<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#limitations" title="">
隻有存儲在Unity Catalog metastore中的表才能與Delta Sharing共享。
隻支持Delta格式的托管表和外部表。
此預覽中不支持共享視圖。
下一個步驟<一個class="headerlink" href="//www.eheci.com/docs/data-sharing/delta-sharing/#next-steps" title="">
了解收信人如何做<一個class="reference internal" href="//www.eheci.com/docs/docs/data-sharing/delta-sharing/recipient.html">訪問股票與達美共享。
了解更多關於<一個class="reference internal" href="//www.eheci.com/docs/docs/data-governance/unity-catalog/index.html">統一目錄.