Загрузка данных с помощью COPY INTO с томами каталога Unity или внешними расположениями
Узнайте, как использовать COPY INTO
для приема данных в каталог Unity, управляемые или внешние таблицы из любого исходного и файлового формата, поддерживаемого COPY INTO. Каталог Unity добавляет новые параметры настройки безопасного доступа к необработанным данным. Вы можете использовать тома каталога Unity или внешние расположения для доступа к данным в облачном хранилище объектов.
Databricks рекомендует использовать тома для доступа к файлам в облачном хранилище в рамках процесса приема.COPY INTO
Дополнительные сведения об использовании томов и внешних расположений см . в рекомендациях по каталогу Unity.
В этой статье описывается, как с помощью COPY INTO
команды загружать данные из контейнера Azure Data Lake Storage 2-го поколения (ADLS 2-го поколения) в учетную запись Azure в таблицу в Databricks SQL.
В этой статье предполагается, что администратор настроил том каталога Unity или внешнее расположение, чтобы получить доступ к исходным файлам в ADLS 2-го поколения. Если администратор настроит вычислительный ресурс для использования субъекта-службы, см. статью "Загрузка данных с помощью COPY INTO" с субъектом-службой или учебником: копирование в Spark SQL . Если администратор предоставил вам временные учетные данные (маркер SAS BLOB-объектов), выполните действия, описанные в разделе "Загрузка данных с помощью 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;
Загрузка данных с помощью внешнего расположения
В следующем примере данные из ADLS 2-го поколения загружаются в таблицу с помощью внешних расположений каталога Unity для предоставления доступа к исходному коду.
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;
Трехуровневое пространство имен для целевых таблиц
Вы можете выполнить настройку для таблицы Unity Catalog, используя трехуровневый идентификатор (<catalog_name>.<database_name>.<table_name>
). Вы можете использовать команды USE CATALOG <catalog_name>
и USE <database_name>
для установки каталога и базы данных по умолчанию для текущего запроса или записной книжки.