共用方式為


與外部 tables 合作

外部 tables 將資料儲存在您的雲端租戶的雲端物件儲存中的一個目錄裡。 當您定義外部 table時,必須指定儲存位置。

只有在您需要直接存取數據而不在 Azure Databricks 上使用計算時,Databricks 才建議使用外部 tables。 當使用者從外部系統存取資料檔時,不會強制執行 Unity Catalog 許可權。

注意

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

使用外部 tables

Azure Databricks 只管理外部 tables 的後設資料,而且不會使用與包含 schema相關聯的管理儲存位置。 Unity Catalog 中的 table 註冊只是數據檔的指標。 當您卸除外部 table時,不會刪除資料檔。

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

外部 tables 可以使用下列檔案格式:

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

建立外部 table

若要建立外部 table,可以使用 SQL 命令或資料框寫入操作。

開始之前

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

  • 外部位置上的 CREATE EXTERNAL TABLE 許可權,授與外部 table所存取之 LOCATION 的存取權。
  • table父 schema的 USE SCHEMA 許可權。
  • table的父元素 catalog上的 USE CATALOG 許可權。
  • table父 schema的 CREATE TABLE 許可權。

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

SQL 命令範例

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

在下列範例中,替換佔位元 values:

  • <catalog>:將包含table的catalog名稱。
  • <schema>:將包含 table的 schema 的名稱。
  • <table-name>:table的一個名稱。
  • <column-specification>:每個 column的名稱和數據類型。
  • <bucket-path>:將建立 tablewhere 雲端記憶體貯體的路徑。
  • <table-directory>:將會建立一個 wheretable 目錄。 針對每個 table使用唯一目錄。
CREATE TABLE <catalog>.<schema>.<table-name>
(
  <column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';

如需建立 tableparameters的詳細資訊,請參閱 CREATE TABLE

DataFrame 寫入作業

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

卸除外部 table

若要刪除 table,您必須是其擁有者或在 table上具有 MANAGE 許可權。 若要卸除外部 table,請執行下列 SQL 命令:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

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

範例筆記本:建立外部 tables

您可以使用下列範例筆記本來建立 catalog、schema和外部 table,以及管理其許可權。

在 Unity Catalog 筆記本中創建和管理 table 外部文件

Get 筆記本