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