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