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


Работа с файлами в томах каталога Unity

На этой странице приведены примеры управления файлами в томах каталога Unity для различных пользовательских интерфейсов, инструментов, библиотек и языков.

Databricks рекомендует использовать тома для управления всем доступом ко всем не табличным данным в облачном хранилище объектов и хранению файлов поддержки рабочих нагрузок. Ниже приведены примеры.

  • Файлы данных для приема, такие как CSV, JSON и Parquet
  • Текстовые, изображения и звуковые файлы для рабочих нагрузок для обработки и анализа данных, машинного обучения и искусственного интеллекта
  • Артефакты CSV или JSON, созданные Azure Databricks для интеграции с внешними системами
  • Библиотеки, скрипты инициализации и артефакты сборки

Тома предоставляют пути в стиле интерфейса переносимой операционной системы (POSIX), которые работают с инструментами и платформами, зависящими от файловой системы в пространстве пользователя (FUSE). Это делает их идеальными для платформ машинного обучения и модулей Python с открытым исходным кодом, требующих доступа в стиле POSIX. Подробные сведения о схемах URI, путях POSIX и их связи с томами см. в статье "Необходимо ли предоставить схему URI для доступа к данным?".

Методы управления файлами в томах

Краткие примеры каждого метода см. в статье "Работа с файлами в томах каталога Unity".

Интерфейс Description
Пользовательский интерфейс обозревателя каталогов Интерактивное управление файлами с помощью рабочей области Azure Databricks
Программный доступ Чтение и запись файлов с помощью Apache Spark, Pandas или SQL
Служебные программы Databricks Операции с файлами с использованием dbutils.fs или магическими командами (%fs, %sh) в записных книжках
Команды SQL Операции с файлами с помощью ключевых слов SQL (LIST, PUT INTO, GET, REMOVE) и соединителей
Интерфейс командной строки Databricks Операции командной строки с помощью databricks fs команд
Пакеты SDK Операции с файлами с помощью пакетов SDK для Python, Java или Go
REST API Прямой доступ к API для пользовательских интеграции

Использование обозревателя каталогов

Обозреватель каталогов имеет параметры для распространенных задач управления файлами, хранящимися в томах каталога Unity.

Чтобы взаимодействовать с файлами в томе, выполните следующие действия.

  1. В рабочей области Azure Databricks щелкните значок данных.Каталог.
  2. Найдите или найдите том, с которым вы хотите работать, и выберите его.

Дополнительные сведения о создании томов и управлении ими см. в статье "Создание томов каталога Unity и управление ими".

Отправка файлов в том

Вы можете загружать файлы любого формата (структурированные, полуструктурированные или неструктурированные) на том. Поддерживаемый томами размер файлов ограничивается максимальным размером, поддерживаемым основным облачным хранилищем. Тем не менее, при загрузке файлов в том через пользовательский интерфейс Azure Databricks, существует ограничение на размер файла в 5 ГБ. Чтобы отправить файлы размером более 5 ГБ, используйте пакет SDK Databricks для Python. Дополнительные сведения см. в разделе "Управление файлами в томах каталога Unity".

Требования

Перед загрузкой в том убедитесь, что у вас есть следующее:

  • Рабочая область с включенным каталогом Unity
  • WRITE VOLUME на целевом томе
  • USE SCHEMA в родительской схеме
  • USE CATALOG в родительском каталоге

Дополнительные сведения см. в разделе "Привилегии каталога Unity" и защищаемые объекты.

Шаги отправки

  1. На боковой панели нажмите кнопку "Создать", а затем добавьте или отправьте данные.
  2. Нажмите «Загрузить файлы в том».
  3. В разделе Файлы щелкните Обзор или перетащите файлы в зону загрузки.
  4. В разделе "Целевой том" выберите том или каталог или вставьте путь тома.

Если в целевой схеме нет тома, его можно создать, нажав кнопку "Создать том". В томе можно создать новый каталог.

Вы также можете получить доступ к пользовательскому интерфейсу отправки следующим образом:

  • В Каталог Эксплорер: Добавление данных>Загрузите файлы в том
  • Из блокнота :>загрузить файлы на том

Дальнейшие шаги

После загрузки на том можно выполнить следующие операции:

  • Загрузка документов для использования с AgentBricks (например, сценарии интеллектуального помощника)

Скачивание файлов из тома

Чтобы скачать файлы из тома, сделайте следующее:

  1. Выберите один или несколько файлов.
  2. Нажмите кнопку "Скачать" , чтобы скачать эти файлы.

Удаление файлов из тома

Чтобы удалить файлы из тома, сделайте следующее:

  1. Выберите один или несколько файлов.
  2. Нажмите Удалить.
  3. Нажмите кнопку "Удалить" , чтобы подтвердить в появившемся диалоговом окне.

Создание пустого каталога

Чтобы создать новый каталог в томе, сделайте следующее:

  1. На вкладке обзора тома нажмите кнопку "Создать каталог".
  2. Введите имя каталога.
  3. Нажмите кнопку "Создать".

Загрузка каталога

Чтобы скачать каталог в томе, сделайте следующее:

  1. Щелкните значок меню Kebab справа от каталога.
  2. Щелкните "Скачать каталог".

Каталог загружается в виде ZIP-файла.

Удаление каталогов из тома

Чтобы удалить каталоги из тома, сделайте следующее:

  1. Выберите один или несколько каталогов.
  2. Нажмите Удалить.
  3. Нажмите кнопку "Удалить" , чтобы подтвердить в появившемся диалоговом окне.

Задачи управления файлами пользовательского интерфейса для томов

Щелкните значок меню kebab. рядом с именем файла, чтобы выполнить следующие действия:

  • Путь копирования
  • Скачивание файла
  • Удалить файл
  • Создание таблицы

Создание таблицы из данных в томе

Azure Databricks предоставляет пользовательский интерфейс для создания управляемой таблицы каталога Unity из файла, файлов или каталога файлов, хранящихся в томе каталога Unity.

Необходимо иметь CREATE TABLE разрешения в целевой схеме и иметь доступ к работающему хранилищу SQL.

  1. Выберите один или несколько файлов или каталог. Файлы должны иметь тот же макет данных.

  2. Нажмите кнопку "Создать таблицу". Появится диалоговое окно Создать таблицу из томов.

  3. Используйте предоставленное диалоговое окно для просмотра данных и выполнения следующих конфигураций:

    • Выберите Создать новую таблицу или перезаписать существующую таблицу
    • Выберите целевой каталог и схему.
    • Укажите имя таблицы.
    • (Необязательно) Переопределите имена столбцов и типы столбцов по умолчанию или исключите столбцы.

    Замечание

    Нажмите кнопку "Дополнительные атрибуты" , чтобы просмотреть дополнительные параметры.

  4. Нажмите кнопку "Создать таблицу ", чтобы создать таблицу с указанными атрибутами. По завершении обозреватель каталогов отображает сведения о таблице.

Программная работа с файлами в томах

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

/Volumes/catalog_name/schema_name/volume_name/path/to/files

Вы взаимодействуете с файлами в томах так же, как и с файлами в любом расположении облачного хранилища объектов. Это означает, что если в настоящее время вы управляете кодом, использующим облачные URI, пути подключения DBFS или корневые пути DBFS для взаимодействия с данными или файлами, вы можете обновить код для использования томов.

Замечание

Тома используются только для не табличных данных. Databricks рекомендует регистрировать табличные данные с помощью таблиц каталога Unity, а затем считывать и записывать данные с помощью имен таблиц.

Чтение и запись данных в томах

Используйте Apache Spark, pandas, Spark SQL и другие библиотеки OSS для чтения и записи файлов данных в томах.

В следующих примерах показано чтение CSV-файла, хранящегося в томе:

Питон

df = spark.read.format("csv").load("/Volumes/catalog_name/schema_name/volume_name/data.csv")

display(df)

Pandas

import pandas as pd

df = pd.read_csv('/Volumes/catalog_name/schema_name/volume_name/data.csv')

display(df)

SQL

SELECT * FROM csv.`/Volumes/catalog_name/schema_name/volume_name/data.csv`

Команды служебной программы для файлов в томах

Databricks предоставляет следующие средства для управления файлами в томах:

Пример использования этих средств для скачивания файлов из Интернета, распакачивания файлов и перемещения файлов из эфемерного блочного хранилища в тома см. в статье Скачивание данных из Интернета.

Пакеты OSS можно также использовать для команд служебной программы файлов, таких как модуль Python os , как показано в следующем примере:

import os

os.mkdir('/Volumes/catalog_name/schema_name/volume_name/directory_name')

Управление файлами в разделах с помощью внешних инструментов

Databricks предоставляет набор средств для программного управления файлами в томах из локальной среды или интегрированных систем.

Команды SQL для файлов в томах

Azure Databricks поддерживает следующие ключевые слова SQL для взаимодействия с файлами в томах:

В ноутбуках Azure Databricks и редакторе запросов SQL поддерживается только команда LIST. Другие команды SQL (PUT INTO, GETи REMOVE) доступны с помощью следующих соединителей и драйверов Databricks SQL, которые поддерживают управление файлами в томах:

Управление файлами в томах с помощью интерфейса командной строки Databricks

Используйте подкоманды в databricks fs. Смотрите fs группу команд.

Замечание

Интерфейс командной строки Databricks требует, чтобы схема dbfs:/ предшествовала всем путям ко томам. Например: dbfs:/Volumes/catalog_name/schema_name/volume_name/path/to/data.

Управление файлами в томах с помощью пакетов SDK

Следующие пакеты SDK поддерживают управление файлами в томах:

Управление файлами в томах с помощью REST API

Используйте API файлов для управления файлами в томах.

Примеры REST API для файлов в томах

В следующих примерах используется curl и REST API Databricks для выполнения задач управления файлами в томах.

В следующем примере создается пустая папка с именем my-folder в указанном томе.

curl --request PUT "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/my-folder/" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"

В следующем примере создается файл data.csv с указанными данными в указанном пути в томе.

curl --request PUT "https://${DATABRICKS_HOST}/api/2.0/fs/files/Volumes/main/default/my-volume/my-folder/data.csv?overwrite=true" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" \
--header "Content-Type: application/octet-stream" \
--data-binary $'id,Text\n1,Hello World!'

В следующем примере перечислены содержимое тома в указанном пути. В этом примере jq используется для форматирования JSON текста ответа для упрощения чтения.

curl --request GET "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq .

В следующем примере перечислены содержимое папки в томе в указанном пути. В этом примере jq используется для форматирования JSON текста ответа для упрощения чтения.

curl --request GET "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/my-folder" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq .

В следующем примере выводится содержимое файла в указанном пути в томе.

curl --request GET "https://${DATABRICKS_HOST}/api/2.0/fs/files/Volumes/main/default/my-volume/my-folder/data.csv" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"

В следующем примере файл удаляется в указанном пути из тома.

curl --request DELETE "https://${DATABRICKS_HOST}/api/2.0/fs/files/Volumes/main/default/my-volume/my-folder/data.csv" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"

В следующем примере удаляется папка из указанного тома.

curl --request DELETE "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/my-folder/" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"

Ограничения работы с файлами в томах

Прежде чем работать с файлами в томах, рассмотрите следующие ограничения:

  • Прямые дозаписи и записи в произвольном порядке не поддерживаются. Это влияет на такие операции, как запись zip-файлов и файлов Excel. Для этих рабочих нагрузок:

    1. Сначала выполните операции на локальном диске
    2. Скопируйте результаты на диск

    Рассмотрим пример.

    # python
    import xlsxwriter
    from shutil import copyfile
    
    workbook = xlsxwriter.Workbook('/local_disk0/tmp/excel.xlsx')
    worksheet = workbook.add_worksheet()
    worksheet.write(0, 0, "Key")
    worksheet.write(0, 1, "Value")
    workbook.close()
    
    copyfile('/local_disk0/tmp/excel.xlsx', '/Volumes/my_catalog/my_schema/my_volume/excel.xlsx')
    
  • Разреженные файлы не поддерживаются. Чтобы скопировать разреженные файлы, используйте cp --sparse=never:

    $ cp sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file
    error writing '/dbfs/sparse.file': Operation not supported
    $ cp --sparse=never sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file