共用方式為


使用外部數據表

外部數據表會將數據儲存在雲端租用戶雲端物件記憶體的目錄中。 當您定義外部資料表時,必須指定儲存位置。

只有在您也需要從非 Databricks 用戶端直接存取數據時,Databricks 才建議使用外部數據表。 當使用者從外部系統存取資料檔時,不會強制執行 Unity 目錄許可權。

警告

如果您使用非 Databricks 用戶端或從 Databricks 內使用路徑型存取來更新外部數據表元數據,該元數據不會自動同步處理狀態與 Unity 目錄。 Databricks 建議不要進行這類元數據更新,但如果您執行一個更新,則必須執行 MSCK REPAIR TABLE <table-name> SYNC METADATA,讓 Unity 目錄中的架構處於最新狀態。 請參閱 REPAIR TABLE

注意

本文著重於 Unity 目錄外部資料表。 舊版Hive中繼存放區中的外部數據表有不同的行為。 請參閱舊版 Hive 中繼存放區中的資料庫物件 (英文)。

使用外部數據表

Azure Databricks 只會管理外部數據表的元數據,而且不會使用與包含架構相關聯的管理記憶體位置。 Unity Catalog 中對數據表的註冊只是指向數據檔案的指標。 當您卸除外部資料表時,不會刪除資料檔。

當您建立外部資料表時,您可以將現有的數據檔案目錄註冊為數據表,或提供建立新數據文件的路徑。

外部資料表可以使用下列檔案格式:

  • DELTA
  • CSV
  • JSON
  • AVRO
  • PARQUET
  • ORC
  • TEXT

建立外部數據表

若要建立外部數據表,可以使用 SQL 命令或 Dataframe 寫入作業。

開始之前

若要建立外部數據表,您必須符合下列許可權需求:

  • 外部位置 CREATE EXTERNAL TABLE 許可權,授與外部數據表所存取之 LOCATION 的存取權。
  • 數據表父架構的 USE SCHEMA 許可權。
  • 表格的父目錄上的 USE CATALOG 權限。
  • 數據表父架構的 CREATE TABLE 許可權。

如需更多有關設定外部位置的資訊,請參閱建立外部位置以將雲端儲存連線到 Azure Databricks (英文)。

SQL 命令範例

在筆記本或 SQL 查詢編輯器中使用下列其中一個命令範例來建立外部數據表。

在下列範例中,取代佔位元值:

  • <catalog>:將包含資料表的目錄名稱。
  • <schema>:將包含數據表的架構名稱。
  • <table-name>:表格的名稱。
  • <column-specification>:每個數據行的名稱和數據類型。
  • <bucket-path>:用於創建資料表的雲端儲存桶路徑。
  • <table-directory>:將建立數據表的目錄。 針對每個數據表使用唯一目錄。
CREATE TABLE <catalog>.<schema>.<table-name>
(
  <column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';

如需資料表建立參數的詳細資訊,請參閱 CREATE TABLE

DataFrame 寫入作業

許多使用者會從查詢結果或 DataFrame 寫入作業建立外部數據表。 下列文章示範一些可用來在 Azure Databricks 上建立外部數據表的模式:

卸除外部數據表

若要刪除資料表,您必須是表的擁有者,或擁有該資料表的 MANAGE 許可權。 若要卸除外部數據表,請執行下列 SQL 命令:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

當您卸除外部數據表時,Unity 目錄不會刪除雲端記憶體中的基礎數據。 如果您需要移除與資料表相關聯的數據,您必須直接刪除基礎數據檔。

範例筆記本:建立外部數據表

您可以使用下列範例筆記本來建立目錄、架構和外部數據表,以及管理其許可權。

在 Unity 目錄筆記本中建立和管理外部數據表

取得筆記本