讀取使用 Databricks-to-Databricks Delta Sharing 共用的資料 (適用於收件者)
本文說明如何使用 Databricks-to-Databricks Delta Sharing 通訊協定與您共用的資料,Databricks 在該通訊協定中管理資料共用的安全連線。 與 Delta Sharing 開放式共用通訊協定不同,Databricks-to-Databricks 通訊協定不需要認證檔案 (權杖型安全性)。
Databricks-to-Databricks 共用要求您 (作為收件者) 有權存取已為 Unity Catalog 啟用的 Databricks 工作區。
如果您沒有已為 Unity Catalog 啟用的 Databricks 工作區,則必須使用 Delta Sharing 開放式共用通訊協定與您共用資料,本文不適用您。 請參閱使用 Delta Sharing 開放式共用讀取共用的資料(適用於收件者)。
如何向團隊提供共用的資料?
若要讀取已使用 Databricks-to-Databricks 通訊協定與您共用的資料和筆記本,您必須是已為 Unity Catalog 啟用的 Databricks 工作區上的使用者。 團隊的一名成員為資料提供者提供 Unity Catalog 中繼存放區的唯一識別碼,資料提供者使用該識別碼建立與組織的安全共用連線。 然後,共用資料會在工作區中供讀取存取,資料提供者對共用資料表、檢視、磁碟區和分割所做的任何更新都會在工作區中近即時反映。
注意
對共用資料表、檢視和磁碟區的更新會近即時顯示在工作區中。 但是,資料行的變更 (新增、重命名、刪除) 可能需要在最多一分鐘後才顯示在目錄總管中。 同樣,新的共用以及對共用的更新 (例如將新資料表新增至共用) 需要在快取一分鐘後才可供您檢視和查詢。
若要讀取與您共用的資料,請執行以下操作:
- 團隊中的使用者尋找共用 (與您共用的資料表、檢視、磁碟區和筆記本的容器),並使用該共用建立目錄 (Databricks Unity Catalog 中所有資料的最上層容器)。
- 團隊中的使用者向團隊的其他成員授與或拒絕對該目錄及其中的物件 (結構描述、資料表、檢視和磁碟區) 的存取權。
- 您可以像讀取 Databricks 中對其具有唯讀 (
SELECT
或READ VOLUME
) 存取權的任何其他資料資產一樣,讀取有權存取的資料表、檢視和磁碟區中的資料。 - 只要您對目錄具有
USE CATALOG
權限,就可以在共用中預覽和複製筆記本。
需要的權限
您必須是中繼存放區管理員或具有 USE PROVIDER
權限,才能列出和檢視有關所有提供者和提供者共用的詳細資料。 其他使用者只能存取其擁有的提供者和共用。
若要從提供者共用建立目錄,您必須是中繼存放區管理員、對 Unity Catalog 中繼存放區同時具有 CREATE_CATALOG
和 USE PROVIDER
權限的使用者,或者是同時擁有提供者物件 CREATE_CATALOG
權限和所有權的使用者。
為能夠授與對透過共用建立的目錄中的結構描述 (資料庫)、資料表、檢視和磁碟區的唯讀存取權,請遵循典型的 Unity Catalog 權限階層。 為能夠檢視透過共用建立的目錄中的筆記本,需要對該目錄具有 USE CATALOG
權限。 請參閱管理 Delta Sharing 目錄中結構描述、資料表和磁碟區的權限。
檢視提供者和共用
若要開始讀取資料提供者與您共用的資料,您需要知道提供者與您共用資料後,儲存在 Unity Catalog 中繼存放區中的提供者和共用物件的名稱。
提供者物件表示與您共用資料的組織的 Unity Catalog 中繼存放區、雲端平台和區域。
共用物件表示提供者與您共用的資料表、磁碟區和檢視。
檢視與您共用資料的所有提供者
若要檢視可用資料提供者的清單,您可以使用目錄總管、Databricks Unity 目錄 CLI,或 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SHOW PROVIDERS
SQL 命令。
需要的權限:您必須是中繼存放區管理員或具有 USE PROVIDER
權限。 其他使用者只能存取其擁有的提供者和提供者共用。
如需詳細資料,請參閱檢視提供者。
檢視提供者詳細資料
若要檢視有關提供者的詳細資料,您可以使用目錄總管、Databricks Unity 目錄 CLI,或 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 DESCRIBE PROVIDER
SQL 命令。
需要的權限:您必須是中繼存放區管理員、具有 USE PROVIDER
權限或擁有提供者物件。
如需詳細資料,請參閱檢視提供者詳細資料。
檢視共用
若要檢視提供者與您共用的共用,您可以使用目錄總管、Databricks Unity 目錄 CLI,或 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SHOW SHARES IN PROVIDER
SQL 命令。
需要的權限:您必須是中繼存放區管理員、具有 USE PROVIDER
權限或擁有提供者物件。
如需詳細資料,請參閱檢視提供者與您共用的共用。
存取共用資料表或磁碟區中的資料
若要讀取共用資料表或磁碟區中的資料,請執行以下操作:
- 特殊權限使用者必須透過包含該資料表或磁碟區的共用建立目錄。 使用者可以是中繼存放區管理員、對 Unity Catalog 中繼存放區同時具有
CREATE_CATALOG
和USE PROVIDER
權限的使用者,或者是同時擁有提供者物件CREATE_CATALOG
權限和所有權的使用者。 - 該使用者或具有相同權限的使用者必須向您授與對此共用資料表或磁碟區的存取權。
- 您可以像存取 Unity Catalog 中繼存放區中註冊的任何其他資料資產一樣,存取此資料表或磁碟區。
透過共用建立目錄
若要讓共用中的資料可供團隊存取,您必須透過共用建立目錄。 若要透過共用建立目錄,您可以使用目錄總管、Databricks Unity 目錄 CLI 或 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令。
需要的權限:中繼存放區管理員、對 Unity Catalog 中繼存放區同時具有 CREATE_CATALOG
和 USE PROVIDER
權限的使用者,或者是同時擁有提供者物件 CREATE_CATALOG
權限和所有權的使用者。
注意
如果共用包含檢視,您必須使用與包含提供者中繼存放區中檢視的目錄名稱不同的目錄名稱。
目錄總管
在您的 Azure Databricks 工作區中,按下 [目錄] 以開啟目錄總管。
在 [目錄] 窗格頂端,按一下齒輪圖示,然後選取 [Delta Sharing]。
或者,從 [快速存取] 頁面,按一下 [Delta Sharing >] 按鈕。
在 [與我共用] 索引標籤上,尋找並選取提供者。
在 [共用] 索引標籤上,尋找共用,然後按一下共用資料列上的 [建立目錄 ]。
輸入目錄的名稱和選用註解。
按一下 [建立]。
或者,在開啟目錄總管時,您可以按一下右上角的 [建立目錄] 來建立共用目錄。 請參閱建立目錄。
SQL
在筆記本或 Databricks SQL 查詢編輯器中執行下列命令。
CREATE CATALOG [IF NOT EXISTS] <catalog-name>
USING SHARE <provider-name>.<share-name>;
CLI
databricks catalogs create <catalog-name> /
--provider-name <provider-name> /
--share-name <share-name>
透過共用建立的目錄具有 Delta Sharing 的目錄類型。 您可以在目錄總管的目錄詳細資料頁面上檢視類型,或在筆記本或 Databricks SQL 查詢中執行 DESCRIBE CATALOG SQL 命令來檢視類型。 所有共用目錄都列在目錄總管左窗格中的 [目錄] > [共用] 下。
Delta Sharing 目錄的管理方式與 Unity Catalog 中繼存放區中的一般目錄的管理方式相同。 您可以使用目錄總管、Databricks CLI,以及使用 SHOW CATALOGS
、DESCRIBE CATALOG
、ALTER CATALOG
和 DROP CATALOG
SQL 命令來檢視、更新和刪除 Delta Sharing 目錄。
透過共用建立的 Delta Sharing 目錄下的 3 級命名空間結構與 Unity Catalog 上的一般目錄下的命名空間結構相同:catalog.schema.table
或 catalog.schema.volume
。
共用目錄下的資料和磁碟區資料是唯讀的,這表示您可以執行讀取作業,例如:
DESCRIBE
、SHOW
和SELECT
(對於資料表)。DESCRIBE VOLUME
、LIST <volume-path>
、SELECT * FROM <format>.'<volume_path>'
和COPY INTO
(對於磁碟區)。
對目錄具有 USE CATALOG
權限的任何使用者都可以預覽和複製共用目錄中的筆記本。
具有下列權限的任何使用者都可以讀取和載入共用目錄中的模型,以便進行推斷:對已註冊模型的 EXECUTE
權限,以及對包含模型的結構描述和目錄的 USE SCHEMA
和 USE CATALOG
權限。
管理 Delta Sharing 目錄中結構描述、資料表和磁碟區的權限
根據預設,目錄建立者是 Delta Sharing 目錄下所有資料物件的擁有者,可以管理其中任何物件的權限。
權限將向下繼承,不過,某些工作區可能仍位於不提供繼承的舊版安全性模型上。 請參閱繼承模型。 已授與對目錄具有 SELECT
權限的任何使用者都將對該目錄中的所有結構描述和資料表具有 SELECT
權限,除非撤銷了該權限。 同樣,已授與對目錄具有 READ VOLUME
權限的任何使用者都將對該目錄中的所有磁碟區具有 READ VOLUME
權限,除非撤銷了該權限。 您無法授與對 Delta Sharing 目錄或 Delta Sharing 目錄中物件進行寫入或更新存取的權限。
目錄擁有者可以將資料物件的所有權委派給其他使用者或群組,從而為這些使用者授與管理物件權限和生命週期的能力。
如需有關使用 Unity Catalog 管理資料物件權限的詳細資訊,請參閱管理 Unity Catalog 中的權限。
讀取共用資料表中的資料
您能以 Azure Databricks 使用者身分使用任何可用工具讀取共用資料表中的資料:目錄總管、筆記本、SQL 查詢、Databricks CLI 和 Databricks REST API。 您必須對資料表具有 SELECT
權限。
讀取共用磁碟區中的資料
您能以 Azure Databricks 使用者身分使用任何可用工具讀取共用磁碟區中的資料:目錄總管、筆記本、SQL 查詢、Databricks CLI 和 Databricks REST API。 您必須對磁碟區具有 READ VOLUME
權限。
載入共用模型以進行推斷
如需有關載入共用模型並用於批次推斷的詳細資料,請參閱依別名載入模型版本來推斷工作負載。
查詢資料表的歷程記錄資料
如果歷程記錄與資料表一起共用,您可以查詢某個版本或時間戳記之前的資料表資料。 需要使用 Databricks Runtime 12.2 LTS 或更新版本。
例如:
SELECT * FROM vaccine.vaccine_us.vaccine_us_distribution VERSION AS OF 3;
SELECT * FROM vaccine.vaccine_us.vaccine_us_distribution TIMESTAMP AS OF "2023-01-01 00:00:00";
此外,如果資料表已啟用變更資料摘要 (CDF),您可以查詢 CDF。 同時支援版本和時間戳記:
SELECT * FROM table_changes('vaccine.vaccine_us.vaccine_us_distribution', 0, 3);
SELECT * FROM table_changes('vaccine.vaccine_us.vaccine_us_distribution', "2023-01-01 00:00:00", "2022-02-01 00:00:00");
如需有關變更資料摘要的詳細資訊,請參閱在 Azure Databricks 上使用 Delta Lake 變更資料摘要。
使用 Apache Spark 結構化串流查詢資料表
如果資料表與歷程記錄一起共用,您可以將該資料表用作 Spark 結構化串流的來源。 需要使用 Databricks Runtime 12.2 LTS 或更新版本。
支援的選項:
ignoreDeletes
:略過刪除資料的交易。ignoreChanges
:如果由於資料變更作業 [例如UPDATE
、MERGE INTO
、DELETE
(分割內) 或OVERWRITE
] 而在來源資料表中重寫了檔案,則重新處理會更新。 仍可以發出未變更的資料列。 因此,下游取用者應能夠處理重複項。 刪除項目不會傳播至下游。ignoreChanges
包含ignoreDeletes
。 因此,如果您使用ignoreChanges
,您的串流不會因來源資料表的刪除或更新而中斷。startingVersion
:要從其開始的共用資料表版本。 從此版本 (含) 開始的所有資料表變更都將由串流來源讀取。startingTimestamp
:要從其開始的時間戳記。 在該時間戳記 (含) 或之後提交的所有資料表變更都將由串流來源讀取。 範例:"2023-01-01 00:00:00.0"
maxFilesPerTrigger
:要在每個微批次中考慮的新檔案數。maxBytesPerTrigger
:在每個微批次中處理的資料量。 此選項會設定一個「軟最大值」,意味著批次處理大約此資料量,並且可能會超過此限制,以便在最小輸入單元大於此限制的情況下,繼續處理串流查詢。readChangeFeed
:串流讀取共用資料表的變更資料摘要。
不支援的選項:
Trigger.availableNow
範例結構化串流查詢
Scala
spark.readStream.format("deltaSharing")
.option("startingVersion", 0)
.option("ignoreChanges", true)
.option("maxFilesPerTrigger", 10)
.table("vaccine.vaccine_us.vaccine_us_distribution")
Python
spark.readStream.format("deltaSharing")\
.option("startingVersion", 0)\
.option("ignoreDeletes", true)\
.option("maxBytesPerTrigger", 10000)\
.table("vaccine.vaccine_us.vaccine_us_distribution")
如果資料表已啟用變更資料摘要 (CDF),您可以串流讀取 CDF。
spark.readStream.format("deltaSharing")
.option("readChangeFeed", "true")
.table("vaccine.vaccine_us.vaccine_us_distribution")
讀取已啟用刪除向量或資料列對應的資料表
重要
這項功能處於公開預覽狀態。
刪除向量是提供者可以在共用差異資料表上啟用的儲存體最佳化功能。 請參閱什麼是刪除向量?。
Azure Databricks 也支援差異資料表的資料行對應。 請參閱重新命名和卸除與 Delta Lake 資料行對應的資料行。
如果您的提供者共用了已啟用刪除向量或資料行對應的資料表,您可以使用 SQL 倉儲或執行 Databricks Runtime 14.1 或更新版本的叢集來對該資料表執行批次讀取。 CDF 和串流查詢需要 Databricks Runtime 14.2 或更新版本。
您可以依現況執行批次查詢,因為它們可以根據共用資料表的資料表功能自動解析 responseFormat
。
若要讀取變更資料摘要 (CDF) 或對已啟用刪除向量或資料行對應的共用資料表執行串流查詢,您必須設定其他選項 responseFormat=delta
。
下列範例顯示批次、CDF 和串流查詢:
import org.apache.spark.sql.SparkSession
// Batch query
spark.read.format("deltaSharing").table(<tableName>)
// CDF query
spark.read.format("deltaSharing")
.option("readChangeFeed", "true")
.option("responseFormat", "delta")
.option("startingVersion", 1)
.table(<tableName>)
// Streaming query
spark.readStream.format("deltaSharing").option("responseFormat", "delta").table(<tableName>)
讀取共用檢視
重要
這項功能處於公開預覽狀態。
注意
只有 Databricks-to-Databricks 共用才支援檢視共用。
讀取共用檢視與讀取共用資料表相同,但以下情況除外:
計算需求:
- 如果您的 Azure Databricks 帳戶與提供者的帳戶不同,您必須使用無伺服器 SQL 倉儲來查詢共用檢視。
- 如果提供者位於相同 Azure Databricks 帳戶上,您可以使用任何 SQL 倉儲,也可以使用採用共用存取模式的叢集。
檢視上的檢視限制:
您無法建立參考共用檢視的檢視。
檢視共用限制:
您無法共用參考共用資料表或共用檢視的檢視。
命名需求:
您用於包含檢視的共用目錄的目錄名稱不能與包含檢視參考的資料表的任何提供者目錄相同。 例如,如果共用檢視包含在 test
目錄中,並且該檢視中參考的其中一個提供者的資料表包含在提供者的 test
目錄中,查詢將導致命名空間衝突錯誤。 請參閱透過共用建立目錄。
歷程記錄和串流:
您無法查詢歷程記錄或使用檢視作為串流來源。
JDBC/ODBC:
本文中的指示著重於使用 Azure Databricks 使用者介面來讀取共用資料,特別是 Unity Catalog 語法和介面。 還可以使用 Apache Spark、Python 和 BI 工具 (如 Tableau 和 Power BI) 透過 Databricks JDBC/ODBC 驅動程式查詢共用檢視。 若要了解如何使用 Databricks JDBC/ODBC 驅動程式進行連線,請參閱 Databricks ODBC 和 JDBC 驅動程式。
讀取共用筆記本
若要預覽和複製共用筆記本檔案,您可以使用目錄總管。
需要的權限:目錄擁有者,或者對透過共用建立的目錄具有 USE CATALOG
權限的使用者。
在 Azure Databricks 工作區中,按一下 [目錄]。
在左窗格中,展開 [目錄] 功能表,尋找並選取透過共用建立的目錄。
在 [其他資產] 索引標籤上,您會看到任何共用的筆記本檔案。
按一下共用筆記本檔案的名稱以進行預覽。
(選用) 按一下 [複製] 按鈕,以將共用筆記本檔案匯入工作區。
- 在 [複製到] 對話方塊中,選擇性地輸入 [新增名稱],然後選取您要複製筆記本檔案到的工作區資料夾。
- 按下 [複製]。
- 複製筆記本之後,隨即快顯對話方塊,讓您知道它已成功複製。 按一下該對話方塊中的 [在筆記本編輯器中顯示],以在筆記本編輯器中進行檢視。