Поделиться через


Загрузка данных с помощью 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> для установки каталога и базы данных по умолчанию для текущего запроса или записной книжки.