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