Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как использовать команду COPY INTO для загрузки данных из контейнера Azure Data Lake Storage (ADLS) в вашем аккаунте Azure в таблицу в Databricks SQL.
В этой статье предполагается, что ваш администратор настроил том Unity Catalog или внешнее хранилище, чтобы обеспечить доступ к исходным файлам в Azure Data Lake Storage (ADLS). Если администратор настроил вычислительный ресурс для использования учетной записи службы, ознакомьтесь с , чтобы загрузить данные с помощью COPY INTO и учетной записи службы, или воспользуйтесь руководством : COPY INTO с Spark SQL. Если администратор предоставил вам временные учетные данные (маркер SAS BLOB-объектов), выполните действия, описанные в при загрузке данных с помощью COPY INTO с временными учетными данными.
Databricks рекомендует использовать тома для доступа к файлам в облачном хранилище в рамках процесса загрузки с помощью COPY INTO. Дополнительные сведения о рекомендациях по использованию томов и внешних расположений см. в разделе "Лучшие практики каталога Unity".
Прежде чем начать
Прежде чем использовать COPY INTO для загрузки данных из тома Unity Catalog или из пути к облачному хранилищу объектов, который определен как внешнее расположение для Unity Catalog, необходимо иметь следующее:
READ VOLUMEПривилегия для тома илиREAD FILESпривилегия на внешнем расположении. Дополнительные сведения о создании томов см. в разделе Что такое тома каталога Unity?. Дополнительные сведения о создании внешних расположений см. в разделе "Обзор внешних расположений".Путь к исходным данным в виде 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: схемы также поддерживается с путями тома (например, dbfs:/Volumes/...), но Databricks рекомендует использовать формат пути /Volumes/, показанный выше.
Загрузка данных с использованием внешней локации
Note
Databricks рекомендует использовать тома для доступа к файлам в облачном хранилище. Внешние расположения поддерживаются, но не являются рекомендуемым подходом. См. статью "Управляемые и внешние таблицы".
В следующем примере данные из ADLS загружаются в таблицу с помощью внешних расположений каталога 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 'abfss://container@storageAccount.dfs.core.windows.net'
FILEFORMAT = PARQUET;
COPY INTO sibling_table
FROM 'abfss://container@storageAccount.dfs.core.windows.net/json-data'
FILEFORMAT = JSON;
Трехуровневое пространство имен для целевых таблиц
Вы можете обратиться к таблице каталога Unity с помощью трехуровневого пространства имен (<catalog_name>.<schema_name>.<table_name>).
USE CATALOG <catalog_name>
USE SCHEMA <schema_name> Используйте команды, чтобы задать каталог и схему по умолчанию для текущего запроса или записной книжки.
В следующем примере данные из тома загружаются в таблицу с помощью трехуровневого пространства имен:
COPY INTO quickstart_catalog.quickstart_schema.landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;
Вы также можете сначала задать каталог и схему по умолчанию:
USE CATALOG quickstart_catalog;
USE SCHEMA quickstart_schema;
COPY INTO landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;