共用方式為


使用 COPY INTO 搭配 Unity 目錄磁碟區或外部位置載入資料

瞭解如何使用 COPY INTO 從 COPY INTO 所支援的任何來源和檔案格式,將資料內嵌至 Unity 目錄受控或外部資料表。 Unity 目錄新增了設定原始數據安全存取的新選項。 您可以使用 Unity 目錄磁碟區或外部位置來存取雲端物件記憶體中的數據。

Databricks 建議使用磁碟區來存取雲端記憶體中的檔案,做為使用 COPY INTO擷取程式的一部分。 如需使用磁碟區和外部位置之建議的詳細資訊,請參閱 Unity 目錄最佳做法

本文說明如何使用 COPY INTO 命令,將數據從 Azure 帳戶中的 Azure Data Lake Storage Gen2 (ADLS Gen2) 容器載入 Databricks SQL 中的數據表。

本文中的步驟假設您的系統管理員已設定 Unity 目錄磁碟區或外部位置,讓您可以在 ADLS Gen2 中存取來源檔案。 如果您的系統管理員將計算資源設定為使用服務主體,請參閱 改為使用 COPY INTO 搭配服務主體 載入資料或 教學課程:使用 Spark SQL COPY INTO。 如果您的系統管理員提供暫存認證(Blob SAS 令牌),請改為遵循使用 COPY INTO 搭配暫存認證載入數據中的步驟。

開始之前

使用 COPY INTO 從 Unity 目錄磁碟區或定義為 Unity 目錄外部位置的雲端物件儲存路徑載入資料之前,您必須具備下列專案:

  • 磁碟 READ VOLUME 區的許可權或 READ FILES 外部位置的許可權。

    如需建立磁碟區的詳細資訊,請參閱 什麼是 Unity 目錄磁碟區?

    如需建立外部位置的詳細資訊,請參閱 建立外部位置以將雲端記憶體連線至 Azure Databricks

  • 源數據的路徑,格式為雲端物件記憶體 URL 或磁碟區路徑。

    雲端物件記憶體 URL 範例: abfss://container@storageAccount.dfs.core.windows.net/raw-data/json

    範例磁碟區路徑: /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json

  • USE SCHEMA包含目標數據表之架構的許可權。

  • USE CATALOG 目錄的許可權。

如需 Unity 目錄許可權的詳細資訊,請參閱 Unity 目錄許可權和安全性實體物件

從磁碟區載入數據

若要從 Unity 目錄磁碟區載入資料,您必須擁有 READ VOLUME 許可權。 磁碟區許可權會套用至指定磁碟區下的所有巢狀目錄。

例如,如果您具有路徑 /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/的磁碟區存取權,下列命令是有效的:

COPY INTO landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;

COPY INTO json_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json'
FILEFORMAT = JSON;

或者,您也可以搭配 dbfs 配置使用磁碟區路徑。 例如,下列命令也是有效的:

COPY INTO landing_table
FROM 'dbfs:/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;

COPY INTO json_table
FROM 'dbfs:/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json'
FILEFORMAT = JSON;

使用外部位置載入數據

下列範例會使用 Unity 目錄外部位置將資料從 ADLS Gen2 載入數據表,以提供原始程式碼的存取權。

COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/jsonData'
FILEFORMAT = JSON;

外部位置許可權繼承

外部位置許可權會套用至指定位置下的所有巢狀目錄。

例如,如果您有使用 URL abfss://container@storageAccount.dfs.core.windows.net/raw-data定義的外部位置存取權,下列命令是有效的:

COPY INTO landing_table
FROM 'abfss://container@storageAccount.dfs.core.windows.net/raw-data'
FILEFORMAT = PARQUET;

COPY INTO json_table
FROM 'abfss://container@storageAccount.dfs.core.windows.net/raw-data/json'
FILEFORMAT = JSON;

此外部位置的許可權不會授與上述目錄的任何許可權,也不會授與指定位置的平行許可權。 例如, 下列兩個命令都無效

COPY INTO parent_table
FROM 's3://landing-bucket'
FILEFORMAT = PARQUET;

COPY INTO sibling_table
FROM 's3://landing-bucket/json-data'
FILEFORMAT = JSON;

目標數據表的三層命名空間

您可以使用三層識別碼 (<catalog_name>.<database_name>.<table_name>) 將 Unity 目錄資料表設為目標。 您可以使用 USE CATALOG <catalog_name>USE <database_name> 命令來設定目前查詢或筆記本的預設目錄和資料庫。