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


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

Чтобы убедиться, что у вас есть доступ к правильным данным в облачном хранилище объектов, сделайте следующее:

  1. На боковой панели щелкните Создать > Запрос.

  2. В строке меню редактора SQL выберите хранилище SQL.

  3. В редакторе SQL вставьте следующий код:

    select * from csv.<path>
    

    Замените <path> путь контейнера ADLS 2-го поколения, полученный от администратора. Например, abfss://<container>@<storage-account>.dfs.core.windows.net/<folder>.

  4. Щелкните Выполнить.

Шаг 2. Создание таблицы

На этом шаге описывается создание таблицы в рабочей области Azure Databricks для хранения входящих данных.

  1. В редакторе 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
    );
    
  2. Щелкните Выполнить.

Шаг 3. Загрузка данных из облачного хранилища в таблицу

На этом шаге описывается загрузка данных из контейнера ADLS 2-го поколения в таблицу в рабочей области Azure Databricks.

  1. На боковой панели щелкните Создать > Запрос.

  2. В строке меню редактора SQL выберите хранилище SQL и убедитесь, что хранилище SQL запущено.

  3. В редакторе 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-файле.

  4. Щелкните Выполнить.

    Примечание.

    Если щелкнуть Выполнить снова, новые данные не будут загружаться в таблицу. Это связано с тем, что команда COPY INTO обрабатывает только то, что она считает новыми данными.

Очистка

Вы можете очистить связанные ресурсы в рабочей области, если они больше не нужны.

Удаление таблиц

  1. На боковой панели щелкните Создать > Запрос.

  2. Выберите хранилище SQL и убедитесь, что хранилище SQL запущено.

  3. Вставьте следующий код:

    DROP TABLE <catalog-name>.<schema-name>.<table-name>;
    
  4. Щелкните Выполнить.

  5. Наведите указатель мыши на вкладку для этого запроса и щелкните значок X.

Удаление запросов в редакторе SQL

  1. На боковой панели щелкните редактор SQL.
  2. В строке меню редактора SQL наведите указатель мыши на вкладку для каждого запроса, созданного для этого руководства, и щелкните значок X.

Дополнительные ресурсы

  • Справочная статья по COPY INTO