差異共用是什麼?
本文介紹 Azure Databricks 中的 Delta Sharing,這是一個安全的資料共用平台,可讓你在 Azure Databricks 中與組織外部的使用者共用資料和 AI 資產,無論這些使用者是否使用 Databricks。 差異共用也是 Databricks Marketplace的基礎,這是一個交換數據產品的開放論壇,包括 資料潔淨室,一個提供多方在敏感企業數據上共同工作的安全且隱私保護的環境 where。
差異共用也可作為 開放原始碼專案, 讓您可用來從其他平臺共用 Delta tables。
Delta Sharing 如何運作?
差異共用是由 Databricks 開發的開放通訊協定,可供與其他組織安全地共用資料,不論他們使用什麼計算平台。
使用 Delta Sharing 共用資料的方式有三種:
Databricks-to-Databricks 共用通訊協定,這可讓您從已啟用 Unity 的 Unity Catalog-enabled 工作區,與同時能夠存取 Unity Catalog-enabled Databricks 工作區的使用者共享數據和 AI 資產。
此方法使用 Azure Databricks 內建的 Delta Sharing 伺服器。 它支援其他通訊協定中不支援的某些 Delta Sharing 功能,包括筆記本共享、Unity Catalog 容量共享、Unity Catalog AI 模型共享、Unity Catalog 數據治理、審計,以及 providers 和 recipients的使用追蹤。 與 Unity 整合 Catalog 可簡化 providers 和 recipients 的設定和控管,並改善效能。
請參閱使用 Delta Sharing Databricks-to-Databricks 通訊協定 共用資料(適用於 providers),。
Databricks 會開啟共用通訊協定,這可讓您與任何運算平臺上的用戶共用在 Unity Catalog啟用 Databricks 工作區中管理的表格式數據。
此方法會使用 Azure Databricks 內建的 Delta Sharing 伺服器,當您使用 Unity Catalog 管理數據,並想要與不使用 Databricks 或沒有 Unity Catalog啟用 Databricks 工作區的用戶共用它時很有用。 與提供者端的 Unity Catalog 整合可簡化 providers的設定和控管。
請參閱使用 Delta Sharing 開放共用通訊協定的 共用資料(針對 providers)。
開放原始碼 Delta Sharing 伺服器的客戶自控實作,可讓你從任何平台共用至任何平台,不論是否使用 Databricks。
Azure Databricks 文件並未涵蓋設定你自己的 Delta Sharing 伺服器的指示。 請參閱 github.com/delta-io/delta-sharing。
Shares、providers和 recipients
Azure Databricks 中 Delta 共享的主要概念是 shares、providers和 recipients。
什麼是共用?
在 Delta 分享中,分享 是提供者想要與一個或多個 tables分享的 table 和 recipients 分割區的唯讀集合。 如果您的收件者使用已啟用 Unity Catalog的 Databricks 工作區,您也可以在分享中包含筆記本檔案、views(其中包含限制數據列和 views 級存取的動態 column)、Unity Catalogvolumes,以及 Unity Catalog 模型。
您可以隨時新增或從共用中取得 removetables、views、volumes、模型和筆記本檔案,您也可以隨時指派或設定 revoke 數據收件者對共用的存取權限。
在已啟用 Unity Catalog的 Azure Databricks 工作區中,共享是已在 Unity Catalog註冊的可保護物件。 如果您從 Unity remove 中繼存放區進行 Catalog 共用,那個共用的所有 recipients 將失去訪問的能力。
請參閱 建立和管理 shares 的 Delta Sharing。
什麼是提供者?
提供者 是與收件者 shares 數據的實體。 如果您是提供者,並且希望利用內建的 Databricks Delta Sharing 伺服器並透過 Unity shares管理 recipients 和 Catalog,您至少需要一個已啟用 Unity Catalog的 Azure Databricks 工作區。 您不需要將所有現有的工作區移轉至 Unity Catalog。 您可以直接建立新的已啟用 Unity Catalog的工作區,以滿足 Delta Sharing 的需求。
如果收件者位於啟用了 Unity Catalog的 Databricks 工作區上,則提供者也是 Unity Catalog 的安全性實體物件,這個物件代表提供者組織,並將該組織與 set的 shares 聯繫起來。
收件者是什麼?
收件者 是從提供者接收 shares 的實體。 在 Unity Catalog中,共用是一個可保護的物件,代表組織,並將它與憑證或安全共用建立關聯 identifier,允許該組織存取一個或多個 shares。
身為數據提供者(sharer),您可以針對任何指定的 Unity recipients 中繼存放區定義多個 Catalog,但如果您想要與特定使用者或使用者群組共用多個 metastores,則必須為每個中繼存放區分別定義收件者。 收件者可以存取多個 shares。
如果提供者從其 Unity Catalog 中繼存放區中刪除收件者,該收件者就會失去先前可存取的所有 shares 存取權。
請參閱 建立和管理 recipients 的數據以供 Delta Sharing使用。
開放式共用與 Databricks-to-Databricks 共用
本節說明從已啟用 Unity Catalog之 Databricks 工作區共用的兩種通訊協定。
注意
本節假設提供者位於已啟用 Unity Catalog的 Azure Databricks 工作區上。 若要瞭解如何設定開放原始碼 Delta Sharing 伺服器以從非 Databricks 平臺或非 Unity Catalog 工作區共用,請參閱 github.com/delta-io/delta-sharing。
提供者在 Azure Databricks 中使用 Delta Sharing 的方式,將取決於他們與誰共用資料:
- 開啟共用可讓你與任何使用者共用資料,無論他們是否有權存取 Azure Databricks。
- Databricks-to-Databricks 共用 可讓您與工作區附加至不同於您之 Unity Catalog 中繼存放區的 Azure Databricks 使用者共享數據。 Databricks-to-Databricks 也支援筆記本、磁碟區和模型共用,這在開放式共用中並不支援。
什麼是開放的 Delta Sharing?
如果你想要與 Azure Databricks 工作區外部的使用者共用資料,無論他們是否使用 Databricks,都可以使用開放的 Delta Sharing 安全地共用你的資料。 身為數據提供者,您 generate 令牌,並與收件者安全地共用。 他們會使用令牌來進行驗證,並在您提供給他們存取的 get 中,tables 包含的 shares 讀取許可權。
Recipients 可以使用許多運算工具和平臺來存取共享數據,包括:
- Azure Databricks
- Apache Spark
- Pandas
- Power BI
如需完整的 Delta Sharing 連接器 list,以及如何使用這些連接器的相關資訊,請參閱 Delta Sharing 文件。
請參閱 使用 Delta Sharing 開放共享協議共用資料(適用於 providers)、。
什麼是 Databricks-to-Databricks Delta Sharing?
如果您想要與已啟用 Unity
Databricks-to-Databricks 共用的優點之一是共用收件者不需要權杖即可存取共用,提供者不需要管理收件者權杖。 共用連線的安全性,包括所有身分識別驗證、驗證和稽核,完全透過 Delta Sharing 和 Databricks 平台進行管理。 另一個優點是共用 Databricks 筆記本檔案、views、Unity Catalogvolumes和 Unity Catalog 模型的能力。
請參閱 使用 Delta Sharing Databricks-to-Databricks 協議分享數據(針對 providers)。
提供者系統管理員如何 set 差異共用?
本節概述 providers 如何啟用 Delta Sharing,並從已啟用 Unity Catalog的 Azure Databricks 工作區起始共用。 如需開放原始碼 Delta Sharing,請參閱 github.com/delta-io/delta-sharing。
在相同帳戶中,Unity Catalogmetastores 之間的 Databricks 對 Databricks 共用功能始終啟用。 如果你是想要讓 Delta Sharing 與其他帳戶或非 Databricks 用戶端中的 Databricks 工作區共用資料的提供者,Azure Databricks 帳戶管理員或中繼存放區管理員會執行下列設定步驟(進階):
針對管理您要共享數據的 Unity Catalog 中繼資料庫啟用 Delta Sharing。
注意
如果您只想要使用 Delta Sharing 與帳戶中其他 Unity Catalogmetastores 上的使用者共享數據,則不需要在您的中繼存放區上啟用 Delta Sharing。 預設會啟用單一 Azure Databricks 帳戶內的中繼存放區對中繼存放區共用。
請參閱在中繼存放區上啟用差異共用。
建立共享,包含在 Unity Catalog 中繼存放區中註冊的數據資產。
如果您要與非 Databricks 收件者共用(稱為開啟共用),則可以將 tables 包含在 Delta 或 Parquet 格式中。 如果您打算使用 Databricks-to-Databricks 共用,也可以將 views、Unity Catalogvolumes和 Unity Catalog 模型以及筆記本檔案新增至共用。
建立收件者。
請參閱 建立和管理 recipients 的數據以供 Delta Sharing使用。
如果您的收件者不是 Databricks 使用者,或沒有存取權進入已啟用 Unity Catalog的 Databricks 工作區,那麼您必須使用 開放共用。 為該收件者產生令牌型 setcredentials。
如果您的收件者可以存取已啟用 Unity Catalog的 Databricks 工作區,您可以使用 Databricks-to-Databricks 共用,而且不需要令牌型認證 credentials。 您會向收件者要求 共用 identifier,並用它來建立安全連線。
提示
以自己為測試收件者,以試用設定程式。
Grant 收件者擁有對一個或多個 shares的存取權。
請參閱 管理 Delta Sharing 資料的存取權 shares(適用於 providers)。
注意
此步驟也可以由具有
USE SHARE
、USE RECIPIENT
和SET SHARE PERMISSION
權限的非系統管理員使用者執行。 請參閱 Unity Catalog 權限和可保護物件。傳送收件者連線至共用所需的資訊(僅限開放式共用)。
請參閱傳送收件者連線資訊。
若要進行公開分享,請使用安全通道傳送啟用連結給接收者,以便他們下載他們的令牌型 credentials。
針對 Databricks 到 Databricks 的共用,當您 grant 給收件者共用的存取權時,共用中包含的數據就會立即在他們的 Databricks 工作區中可用。
收件者現在可以存取共用資料。
recipients 如何存取共享數據?
Recipients 以唯讀格式存取共享資料資產。 共用筆記本檔案是唯讀的,但可以複製並在收件者工作區中執行修改,就像任何其他筆記本一樣。
安全存取取決於共用模型:
- 開啟共用(收件者沒有針對 Unity Catalog啟用 Databricks 工作區):每當收件者存取所選工具中的數據時,都會提供認證,包括 Apache Spark、pandas、Power BI、Databricks 等等。 請參閱 使用 Delta Sharing 開啟共享來讀取共享的資料(適用於 recipients),。
- Databricks 到 Databricks (Unity Catalog已啟用的接收方工作區):接收方會使用 Databricks 存取資料。 他們可以使用 Unity Catalog 和 grant 在其 Databricks 帳戶中訪問其他使用者,deny。 請參閱 讀取透過 Databricks-to-Databricks Delta Sharing 共享的資料(適用於 recipients)。
每當數據提供者在自己的 Databricks 帳戶中更新數據 tables 或 volumes 時,更新就會以近乎即時的方式出現在收件者的系統中。
如何追蹤誰正在共用和存取共用資料?
已啟用 Unity providers的 Azure Databricks 工作區上的數據 Catalog,可以使用 Azure Databricks 稽核記錄和系統 tables 來監控 shares 和 recipients的建立與修改,並可監控 shares上的收件者活動。 請參閱稽核和監視資料共用。
在 Databricks 工作區中使用共用數據的數據 recipients 可以使用 Databricks 稽核記錄和系統 tables 來瞭解誰正在存取哪些數據。 請參閱稽核和監視資料共用。
分享 volumes
您可以使用 Databricks 到 Databricks 共用過程來分享 volumes。 請參閱 將 volumes 新增至共用(適用於 providers),並 使用 Databricks 到 Databricks Delta Sharing(適用於 recipients) 讀取共用的數據(recipients)。
共用模型
你可以使用 Databricks-to-Databricks 共用流程來共用模型。 請參閱 將模型新增至共用(適用於 providers),並 使用 Databricks-to-Databricks Delta Sharing(recipients) 讀取共用的數據(適用於 recipients)。
共用筆記本
你可以使用 Delta Sharing,透過 Databricks-to-Databricks 共用流程來共用筆記本檔案。 請參閱 將筆記本檔案新增至共用(適用於 providers)以及 閱讀共用筆記本(適用於 recipients)。
限制數據列和 column 層級的存取
您可以共用動態 views,以根據收件者屬性限制對特定 table 數據的存取。 動態檢視共用需要 Databricks-to-Databricks 共用流程。 請參閱 將動態 views 新增至共享以篩選資料列和 columns。
Delta Sharing 和串流
Delta Sharing 支援 Spark 結構化串流。 提供者可以與歷程記錄共用 table,讓收件者可以使用它作為結構化串流來源,以低延遲以累加方式處理共享數據。 Recipients 也可以對與歷程記錄共用的 執行 tables。
若要瞭解如何與歷程記錄共用 tables,請參閱 將 tables 新增至共用。 若要瞭解如何使用共用 tables 作為串流來源,請參閱 table 查詢 (針對 Databricks 到 Databricks 共用的 recipients),或 table 存取共用 (針對開放共享數據的 recipients)。
另請參閱 Azure Databricks 上的串流。
Delta Lake 功能支援矩陣
當您分享 table時,Delta Sharing 支援 Delta Lake 的大多數功能。 此支援矩陣會列出:
- 需要特定版本的 Databricks Runtime、開放原始碼 Delta Sharing Spark 連接器或開放原始碼 Delta Sharing Python 連接器的 Delta 功能。
- 部分支援功能。
功能 | 提供者 | Databricks 收件者 | 開放原始碼收件者 |
---|---|---|---|
刪除向量 | 與這項功能共用 tables 目前在公開預覽階段。 | - 適用於批次查詢的 Databricks Runtime 14.1+ - 適用於 CDF 和串流查詢的 Databricks Runtime 14.2+ |
- Delta Sharing Spark 連接器 3.1+ - Delta Sharing Python 連接器 1.1.0+ - Power BI v2.132.908.0+ |
Column 對應 | 與這項功能共用 tables 目前在公開預覽階段。 | - 適用於批次查詢的 Databricks Runtime 14.1+ - 適用於 CDF 和串流查詢的 Databricks Runtime 14.2+ |
- Delta Sharing Spark 連接器 3.1+ - Delta Sharing Python 連接器 1.1.0+ - Power BI v2.132.908.0+ |
統一格式 | 與這項功能共用 tables 目前在公開預覽階段。 | - 適用於批次查詢的 Databricks Runtime 14.1+ - 適用於 CDF 和串流查詢的 Databricks Runtime 14.2+ |
- Delta Sharing Spark 連接器 3.1+ - Delta Sharing Python 連接器 1.1.0+ - Power BI v2.132.908.0+ |
V2 檢查點 | 支援有限 | 支援有限 | 支援有限 |
TimestampNTZ | 支援 | Databricks Runtime 14.1+ | Delta Sharing Spark 連接器 3.3+ |
液體叢集 | 支援有限 | 支援有限 | 支援有限 |
差異共用常見問題
以下是 Delta Sharing 的常見問題。
我需要 Unity Catalog 才能使用 Delta Sharing 嗎?
否,您不需要 Unity Catalog 來分享資料(作為提供者)或使用分享資料(作為接收者)。 不過,Unity Catalog 提供優點,例如支援非表格式和 AI 資產共用、現成的治理、簡單性和查詢效能。
Providers 可以透過兩種方式共享數據:
將資產放在 Unity Catalog 管理之下,並使用內建的 Azure Databricks Delta Sharing 伺服器加以共用。
您不需要將所有資產移至 Unity Catalog。 您只需要一個已啟用 Unity Catalog 的 Azure Databricks 工作區來管理您想要共享的資產。 在某些帳戶中,會自動為 Unity Catalog 啟用新的工作區。 請參閱 Unity 的自動啟用 Catalog。
實作開放的 Delta Sharing 伺服器,以共用資料,而不一定要使用你的 Azure Databricks 帳戶。
Recipients 可以透過兩種方式取用資料:
沒有 Databricks 工作區, 使用適用於許多資料平台的開放原始碼差異共用連接器,包括 Power BI、pandas 和開放原始碼 Apache Spark。 請參閱 使用 Delta Sharing 開放共享功能共享的數據(recipients) 以及 Delta Sharing 開放原始碼專案。
在 Databricks 工作區中, 收件者工作區不需要針對 Unity Catalog啟用,但啟用後可以在治理、簡單性和效能方面獲得優勢。
想要這些優點的收件者組織不需要將所有資產移轉至 Unity Catalog。 您只需要一個已啟用 Unity Catalog 的 Azure Databricks 工作區,即可管理與您共用的資產。 在某些帳戶中,會自動為 Unity Catalog 啟用新的工作區。 請參閱 Unity 的自動啟用 Catalog。
請參閱 使用 Delta Sharing 開放共用資料(適用於 recipients) 和 使用 Databricks-to-Databricks Delta Sharing 共用的資料(適用於 recipients)。
是否需要成為 Databricks 客戶才能使用差異共用?
否,差異共用是開放式通訊協定。 您可以在任何數據平臺上與 recipients 共用非 Databricks 數據。 Providers 可以設定 Delta Sharing 開放伺服器,以便從任何運算平台進行共用。 Recipients 可以使用適用於許多數據產品的開放原始碼 Delta 共用連接器來取用共享數據,包括 Power BI、pandas 和開放原始碼 Spark。
不過,在 Azure Databricks 上使用 Delta Sharing,尤其是在啟用 Unity Catalog的工作區中進行共用,有許多優點。
如需詳細資訊,請參閱此常見問題中的第一個問題。
差異共用是否會產生輸出成本?
區域內的差異共用不會產生任何輸出成本。 與其他資料共用平台不同,差異共用不需要資料複寫。 此模型有許多優點,但這意味著當跨雲端或跨區域共用資料時,你的雲端廠商可能會收取資料輸出費用。 Azure Databricks 支援從 Cloudflare R2 共用,不會產生任何輸出費用,並提供其他工具和建議來監視和避免輸出費用。 請參閱 監視及管理 Delta 共享(適用於 providers)的外流成本。
providers revoke 收件者是否可以存取?
是,可以根據需要,並在指定的粒度層級撤銷收件者存取權限。 您可以 deny 收件者存取特定的 shares 和特定的 IP 位址,篩選收件者的結構化數據,revoke 收件者令牌,以及完全刪除 recipients。 請參閱 Revoke 收件者對共用 的存取權,並recipients的數據 。
使用預先簽署的 URL 是否不安全?
差異共用會使用預先簽署的 URL 來提供物件儲存體中檔案的暫時存取權限。 它們只會提供給已存取共享數據的 recipients。 它們很安全,因為它們是短期的,而且存取層級不會超過已經授予的範圍 recipients。
差異共用開放式共用通訊協定中使用的權杖是否安全?
因為差異共用會啟用跨平台共用,不同於其他可用的資料共用平台,共用通訊協定需要開啟的權杖。 Providers 可以藉由設定令牌存留期、設定網路控制,以及視需要撤銷存取權,來確保令牌安全性。 此外,令牌不會擴展超過已授予 recipients 的存取層級。 請參閱權杖的安全性考量。
如果您不想使用令牌來管理收件者 shares的存取權,您應該使用 Databricks 到 Databricks 共用,或連絡 Databricks 帳戶小組以取得替代方案。
Delta Sharing 是否支援檢視共用?
是,Delta Sharing 支援檢視共用。 請參閱 將 views 新增至共享。
如果要了解檢視共用的計劃增強功能,請連絡 Databricks 帳戶小組。
限制
- 表格式資料必須採用 Delta table 格式。 您可以輕鬆地將 Parquet tables 轉換為 Delta,然後再重新轉換一次。 請參閱 CONVERT TO DELTA。
- Delta Sharing 支援使用液體叢集和 V2 檢查點的 tables,但有下列限制:
- Recipients 只能執行快照查詢。 無法執行變更資料摘要 (CDF) 或串流查詢。
- Providers 不能與 table 共享 partition 篩選功能。
- Providers 無法與液體叢集和 V2 檢查點共用 R2 tables。
- Table 約束(主要鍵和外鍵約束)在共用的 tables中不可用。
- 必須在 Delta views 或其他可共用的 tables上定義可共用的 views。 請參閱 ,將 views 新增至共用(適用於 providers),以及 讀取共用的 views(適用於 recipients)。
- 只有 Databricks-to-Databricks 共用才支援筆記本共用。 請參閱 將筆記本檔案新增至共用 和 使用 Databricks-to-Databricks Delta Sharing recipients來讀取共享的數據。
- 只有 Databricks-to-Databricks 共用才支援磁碟區共用。 請參閱 將 volumes 新增至共用(適用於 providers),以及使用 Databricks-to-Databricks Delta Sharing 讀取共享的數據 (適用於 recipients)。
- 只有 Databricks-to-Databricks 共用才支援模型共用。 請參閱 將模型加入到共享資料集(適用於 providers),以及使用 Databricks 到 Databricks Delta Sharing 閱讀共享資料 (適用於 recipients)。
- 共用 table的元數據中允許的檔案數目有限制。 若要深入了解,請參閱 資源超出錯誤 limit。
- 名為
information_schema
的架構無法匯入 Unity Catalog 中繼存放區,因為該 schema 名稱會保留於 Unity Catalog中。 - Delta Sharing 不支持共用
SHALLOW CLONE
tables。 Azure Databricks 不支援參考絕對路徑之 Delta 記錄的預先簽署 URL。
另請參閱 Delta Lake 功能支援矩陣。
資源配額
Azure Databricks 會對所有 Delta Sharing 安全性實體對象強制執行資源配額。 這些配額列在資源限制中。 如果你預期超過這些資源限制,請連絡你的 Azure Databricks 帳戶團隊。
您可以使用 Unity Catalog 資源配額 API 來監視配額使用量。 請參閱 ,監控 Unity Catalog 資源配額的使用情況。