共用方式為


使用外部數據表

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

只有在您需要直接存取數據而不在 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 目錄筆記本中建立和管理外部數據表

取得筆記本