使用外部數據表
外部數據表會將數據儲存在雲端租用戶雲端物件記憶體的目錄中。 當您定義外部資料表時,必須指定儲存位置。
只有在您需要直接存取數據而不在 Azure Databricks 上使用計算時,Databricks 才建議使用外部數據表。 當使用者從外部系統存取資料檔時,不會強制執行 Unity 目錄許可權。
注意
本文著重於 Unity 目錄外部資料表。 舊版Hive中繼存放區中的外部數據表有不同的行為。 請參閱 舊版Hive中繼存放區中的資料庫物件。
使用外部數據表
Azure Databricks 只會管理外部數據表的元數據,而且不會使用與包含架構相關聯的管理記憶體位置。 Unity 目錄中的數據表註冊只是數據檔的指標。 當您卸除外部資料表時,不會刪除資料檔。
當您建立外部資料表時,您可以將現有的數據檔案目錄註冊為數據表,或提供建立新數據文件的路徑。
外部資料表可以使用下列檔案格式:
- 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 寫入作業建立外部數據表。 下列文章示範一些可用來在 Azure Databricks 上建立外部數據表的模式:
卸除外部數據表
若要卸除數據表,您必須是其擁有者。 若要卸除外部數據表,請執行下列 SQL 命令:
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
當您卸除外部數據表時,Unity 目錄不會刪除雲端記憶體中的基礎數據。 如果您需要移除與資料表相關聯的數據,您必須直接刪除基礎數據檔。
範例筆記本:建立外部數據表
您可以使用下列範例筆記本來建立目錄、架構和外部數據表,以及管理其許可權。
在 Unity 目錄筆記本中建立和管理外部數據表
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應