Загрузка данных с помощью COPY INTO с субъектом-службой
В этой статье описывается, как с помощью COPY INTO
команды загружать данные из контейнера Azure Data Lake Storage 2-го поколения (ADLS 2-го поколения) в учетную запись Azure в таблицу в Databricks SQL.
В этой статье предполагается, что администратор настроил хранилище SQL для использования субъекта-службы Azure Databricks, чтобы получить доступ к исходным файлам в ADLS 2-го поколения. Если администратор настроили внешнее расположение каталога Unity с учетными данными хранения, см. раздел "Загрузка данных с помощью COPY INTO" с томами каталога Unity или внешними расположениями . Если администратор предоставил вам временные учетные данные (маркер SAS BLOB-объектов), выполните действия, описанные в разделе "Загрузка данных с помощью COPY INTO" с временными учетными данными .
Databricks рекомендует использовать команду COPY INTO для добавочной и массовой загрузки данных с помощью Databricks SQL.
Примечание.
COPY INTO
хорошо подходит для источников данных, содержащих тысячи файлов. Databricks рекомендует использовать автозагрузчик для загрузки миллионов файлов (не поддерживается в SQL Databricks).
Подготовка к работе
Прежде чем загружать данные в Azure Databricks, убедитесь, что у вас есть следующее:
- Доступ к данным в ADLS 2-го поколения. Администратор должен сначала выполнить действия, описанные в статье "Настройка доступа к данным для приема данных", чтобы хранилище Databricks SQL могли считывать исходные файлы.
- Хранилище SQL Databricks.
- Разрешение на управление хранилищем SQL.
- Путь к данным в контейнере ADLS 2-го поколения.
- Опыт работы с пользовательским интерфейсом SQL Databricks.
Шаг 1. Подтверждение доступа к данным в облачном хранилище
Чтобы убедиться, что у вас есть доступ к правильным данным в облачном хранилище объектов, сделайте следующее:
На боковой панели щелкните Создать > Запрос.
В строке меню редактора SQL выберите хранилище SQL.
В редакторе SQL вставьте следующий код:
select * from csv.<path>
Замените
<path>
путь контейнера ADLS 2-го поколения, полученный от администратора. Например,abfss://<container>@<storage-account>.dfs.core.windows.net/<folder>
.Щелкните Выполнить.
Шаг 2. Создание таблицы
На этом шаге описывается создание таблицы в рабочей области Azure Databricks для хранения входящих данных.
В редакторе SQL вставьте следующий код:
CREATE TABLE <catalog_name>.<schema_name>.<table_name> ( tpep_pickup_datetime TIMESTAMP, tpep_dropoff_datetime TIMESTAMP, trip_distance DOUBLE, fare_amount DOUBLE, pickup_zip INT, dropoff_zip INT );
Щелкните Выполнить.
Шаг 3. Загрузка данных из облачного хранилища в таблицу
На этом шаге описывается загрузка данных из контейнера ADLS 2-го поколения в таблицу в рабочей области Azure Databricks.
На боковой панели щелкните Создать > Запрос.
В строке меню редактора SQL выберите хранилище SQL и убедитесь, что хранилище SQL запущено.
В редакторе SQL вставьте следующий код: В этом коде замените:
<container>
с именем контейнера ADLS 2-го поколения в учетной записи хранения.<storage-account>
именем учетной записи хранения ADLS 2-го поколения.<folder>
с именем папки, содержащей данные.<blob-sas-token>
значение маркера SAS BLOB-объектов, полученного администратором.
COPY INTO <catalog-name>.<schema-name>.<table-name> FROM 'abfss://<container>@<storage-account>.dfs.core.windows.net/<folder>' FILEFORMAT = CSV FORMAT_OPTIONS ( 'header' = 'true', 'inferSchema' = 'true' ); SELECT * FROM <catalog-name>.<schema-name>.<table-name>;
Примечание.
FORMAT_OPTIONS
отличается отFILEFORMAT
. В этом случае параметрheader
указывает Azure Databricks обрабатывать первую строку CSV-файла как заголовок, а параметрыinferSchema
указывают Azure Databricks автоматически определять тип данных каждого поля в CSV-файле.Щелкните Выполнить.
Примечание.
Если щелкнуть Выполнить снова, новые данные не будут загружаться в таблицу. Это связано с тем, что команда
COPY INTO
обрабатывает только то, что она считает новыми данными.
Очистка
Вы можете очистить связанные ресурсы в рабочей области, если они больше не нужны.
Удаление таблиц
На боковой панели щелкните Создать > Запрос.
Выберите хранилище SQL и убедитесь, что хранилище SQL запущено.
Вставьте следующий код:
DROP TABLE <catalog-name>.<schema-name>.<table-name>;
Щелкните Выполнить.
Наведите указатель мыши на вкладку для этого запроса и щелкните значок X.
Удаление запросов в редакторе SQL
- На боковой панели щелкните редактор SQL.
- В строке меню редактора SQL наведите указатель мыши на вкладку для каждого запроса, созданного для этого руководства, и щелкните значок X.
Дополнительные ресурсы
- Справочная статья по COPY INTO