Share via


使用 Databricks-to-Databricks Delta Sharing 讀取共享的數據(適用於收件者)

本文說明如何使用 Databricks 對 Databricks Delta Sharing 通訊協定來讀取已與您 共用的數據,其中 Databricks 會管理數據共用的安全連線。 不同於 Delta 共用 開啟共用 通訊協定,Databricks 對 Databricks 通訊協定不需要認證檔案(令牌型安全性)。

Databricks 對 Databricks 共用需要身為收件者,才能存取已啟用 Unity 目錄的 Databricks 工作區

如果您沒有針對 Unity 目錄啟用的 Databricks 工作區,則必須使用差異共用開啟共用通訊協定與您共用數據,本文不適用於您。 請參閱使用 Delta Sharing 開啟共用讀取共用的數據(適用於收件者)。

如何? 我的小組可以使用共享數據嗎?

若要使用 Databricks 對 Databricks 通訊協定來讀取與您共用的數據和筆記本,您必須是已啟用 Unity 目錄之 Databricks 工作區的使用者。 小組的成員會為數據提供者提供 Unity 目錄中繼存放區的唯一標識碼,而數據提供者會使用該標識符來建立與組織的安全共享連線。 然後,共用的數據會變成可供您工作區中的讀取存取權,而數據提供者對共用數據表、檢視表、磁碟區及分割區所做的任何更新,都會以近乎即時的方式反映在工作區中。

注意

更新 以近乎即時的方式出現在工作區中的共享數據表、檢視和磁碟區。 不過,數據行變更(新增、重新命名、刪除)可能不會出現在目錄總管中長達一分鐘。 同樣地,新的共用和共用更新(例如將新的數據表新增至共用)會快取一分鐘,然後才可供您檢視和查詢。

若要讀取已與您共享的資料:

  1. 小組上的用戶會 尋找共用—數據表、檢視、磁碟區和筆記本的容器,這些數據表、檢視、磁碟區和筆記本已與您共用,並使用該共用來建立 目錄—Databricks Unity 目錄中所有數據的最上層容器。
  2. 小組上的使用者會授與或拒絕目錄內的目錄和物件存取權(架構、數據表、檢視和磁碟區)給小組的其他成員。
  3. 您會讀取數據表、檢視和磁碟區中的數據,這些數據已獲得存取權,就像 Databricks 中您擁有唯讀或SELECTREAD VOLUME存取權的任何其他數據資產一樣。
  4. 只要您擁有 USE CATALOG 目錄的許可權,就可以在共用中預覽和複製筆記本。

需要的許可權

若要能夠列出和檢視所有提供者和提供者共用的詳細數據,您必須是中繼存放區管理員或具有 USE PROVIDER 許可權。 其他使用者只能存取其擁有的提供者和共用。

若要從提供者共用建立目錄,您必須是中繼存放區管理員、擁有 Unity 目錄中繼存放區和USE PROVIDER許可權的使用者CREATE_CATALOG,或是同時擁有CREATE_CATALOG提供者物件許可權和擁有權的使用者。

在從共用建立的目錄中,授與只讀存取架構(資料庫)、數據表、檢視和磁碟區的能力,遵循一般的 Unity 目錄許可權階層。 能夠檢視從共用建立之目錄中的筆記本, USE CATALOG 需要目錄的許可權。 請參閱 管理差異共享目錄中架構、數據表和磁碟區的許可權。

檢視提供者和共用

若要開始讀取資料提供者與您共享的數據,您必須知道提供者的名稱,並在提供者與您共用數據后,共用儲存在 Unity 目錄中繼存放區中的物件。

提供者物件代表與您共用數據的組織的 Unity 目錄中繼存放區、雲端平臺和區域。

共享物件代表提供者與您共享的數據表、磁碟區和檢視表。

檢視與您共用數據的所有提供者

若要檢視可用的數據提供者清單,您可以使用目錄總管、Databricks Unity 目錄 CLI,或 SHOW PROVIDERS Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令。

需要許可權: 您必須是中繼存放區管理員或具有 USE PROVIDER 許可權。 其他使用者只能存取其擁有的提供者和提供者共用。

如需詳細資訊,請參閱 檢視提供者

檢視提供者詳細數據

若要檢視提供者的詳細數據,您可以使用目錄總管、Databricks Unity 目錄 CLI,或 DESCRIBE PROVIDER Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令。

需要許可權: 您必須是中繼存放區系統管理員、擁有 USE PROVIDER 許可權或擁有提供者物件。

如需詳細資訊,請參閱 檢視提供者詳細數據

檢視共用

若要檢視提供者與您共用的共用,您可以使用目錄總管、Databricks Unity 目錄 CLI,或 SHOW SHARES IN PROVIDER Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令。

需要許可權: 您必須是中繼存放區系統管理員、擁有 USE PROVIDER 許可權或擁有提供者物件。

如需詳細資訊,請參閱 檢視提供者與您共用的共用。

存取共享數據表或磁碟區中的數據

若要讀取共享資料表或磁碟區中的數據:

  1. 特殊許可權的用戶必須從包含數據表或磁碟區的共用建立目錄。 這可以是中繼存放區管理員、擁有 Unity 目錄中繼存放區和USE PROVIDER許可權的使用者CREATE_CATALOG,或是同時擁有CREATE_CATALOG提供者物件許可權和擁有權的使用者。
  2. 該使用者或具有相同許可權的用戶必須授與您共用數據表或磁碟區的存取權。
  3. 您可以存取數據表或磁碟區,就像在 Unity 目錄中繼存放區中註冊的任何其他數據資產一樣。

從共用建立目錄

若要讓小組能夠存取共用中的數據,您必須從共用建立目錄。 若要從共用建立目錄,您可以使用目錄總管、Databricks Unity 目錄 CLI,或 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令。

需要的許可權:中繼存放區管理員、擁有 Unity 目錄中繼存放區和USE PROVIDER許可權的使用者,或同時CREATE_CATALOG擁有CREATE_CATALOG提供者物件許可權和擁有權的使用者。

注意

如果共用包含檢視,您必須使用與提供者中繼存放區中包含檢視之目錄名稱不同的目錄名稱。

目錄總管

  1. 在您的 Azure Databricks 工作區中,按兩下 目錄圖示[目錄]。
  2. 在左窗格中,展開 [ 差異共用 ] 功能表,然後選取 [與我共用]。
  3. 在 [ 提供者] 索引標籤上,選取提供者。
  4. 在 [ 共用] 索引標籤上,尋找共用,然後按兩下 共用數據列上的 [建立目錄 ]。
  5. 輸入目錄的名稱和選擇性批注。
  6. 按一下 [建立]

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 命令。 所有共享目錄都會列在目錄總管左窗格中的 [目錄>共用] 底下。

差異共享目錄可以與 Unity 目錄中繼存放區上的一般目錄相同的方式來管理。 您可以使用目錄總管、Databricks CLI,以及使用 SHOW CATALOGSDESCRIBE CATALOGALTER CATALOGDROP CATALOG SQL 命令來檢視、更新和刪除差異共享目錄。

從共用建立之 Delta Sharing 目錄下的 3 層命名空間結構,與 Unity 目錄上的一般目錄下相同: catalog.schema.tablecatalog.schema.volume

共用目錄下的數據表和磁碟區數據是唯讀的,這表示您可以執行讀取作業,例如:

  • DESCRIBE資料表的、 SHOWSELECT
  • DESCRIBE VOLUMELIST <volume-path>SELECT * FROM <format>.'<volume_path>'COPY INTO 磁碟區。

共享目錄中的筆記本可由任何使用者在 USE CATALOG 目錄中預覽和複製。

共享目錄中的模型可以讀取和載入,以供任何具有下列許可權的使用者推斷:EXECUTE已註冊模型的許可權,以及USE SCHEMAUSE CATALOG包含模型的架構和目錄的許可權。

管理差異共享目錄中架構、數據表和磁碟區的許可權

根據預設,目錄建立者是 Delta Sharing 目錄下所有數據對象的擁有者,而且可以管理其中任何對象的許可權。

許可權會向下繼承,不過某些工作區可能仍位於未提供繼承的舊版安全性模型上。 請參閱 繼承模型。 獲 SELECT 授與目錄許可權的任何使用者,除非撤銷該許可權,否則目錄中的所有架構和數據表都會有 SELECT 許可權。 同樣地,除非撤銷該許可權,否則授 READ VOLUME 與目錄上許可權的任何用戶都會擁有 READ VOLUME 目錄中所有磁碟區的許可權。 您無法授與許可權,授與對 Delta Sharing 目錄或物件之寫入或更新存取權的許可權。

目錄擁有者可以將數據對象的擁有權委派給其他使用者或群組,從而授與這些使用者管理物件許可權和生命週期的能力。

如需使用 Unity 目錄管理資料物件許可權的詳細資訊,請參閱 在 Unity 目錄中管理許可權。

讀取共享數據表中的數據

您可以使用 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 INTODELETE (在分割區內),或 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 數據表的數據行對應。 請參閱 使用 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 目錄語法和介面。 您也可以使用 Apache Spark、Python 和 BI 工具查詢共享檢視,例如 Tableau 和 Power BI,使用 Databricks JDBC/ODBC 驅動程式。 若要瞭解如何使用 Databricks JDBC/ODBC 驅動程式進行連線,請參閱 Databricks ODBC 和 JDBC 驅動程式

讀取共用筆記本

若要預覽和複製共享筆記本檔案,您可以使用目錄總管。

需要的許可權: 目錄擁有者或具有從共用建立之目錄的許可權的使用者 USE CATALOG

  1. 在您的 Azure Databricks 工作區中,按兩下 目錄圖示[目錄]。

  2. 在左窗格中,展開 [目錄 ] 功能表,尋找並選取從共用建立的目錄。

  3. 在 [ 其他資產 ] 索引標籤上,您會看到任何共享的筆記本檔案。

  4. 按兩下共用筆記本檔案的名稱來預覽它。

  5. (選擇性)按兩下 [ 複製] 按鈕,將共用筆記本檔案匯入您的工作區。

    1. 在 [ 複製到] 對話框中,選擇性地輸入 [新增名稱],然後選取您要複製筆記本檔案的工作區資料夾。
    2. 按一下 [複製]
    3. 複製筆記本之後,會出現一個對話框,讓您知道它已成功複製。 按兩下 對話框的筆記本編輯器 中的顯示,即可在筆記本編輯器中檢視它。

    請參閱 Databricks 筆記本簡介。