Работа с файлами в томах каталога 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) в записных книжках
Список и запрос файлов Запрос метаданных файла с помощью READ_FILES и фильтрации по свойствам
Команды 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. В разделе "Целевой том" выберите том или каталог или вставьте путь тома.

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

Замечание

Чтобы отправить собственные файлы без первого создания каталога, схемы и тома, можно выбрать "Мои файлы", том для каждого пользователя в качестве назначения. Мои файлы в бета-версии. См. Сохранение файлов в «Моих файлах».

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

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

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

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

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

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

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

  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')

Контрольные точки DataFrame в объемах

Вы можете использовать пути каталога Unity для хранения контрольных точек DataFrame. Контрольные точки кадра данных сокращают план выполнения кадра данных и сохраняют содержимое в хранилище. Это может повысить производительность итеративных алгоритмов и сложных планов запросов, предотвращая чрезмерно длинные линии при повторном использовании кадров данных.

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

Требования

  • Databricks Runtime 18.1 или более поздней версии.
  • Вычисления с поддержкой Unity Catalog, используя выделенный или стандартный режим доступа. Контрольные точки кадра данных в томах не поддерживаются на бессерверных вычислениях.

Настройка каталога контрольной точки

Метод настройки каталога контрольных точек зависит от режима доступа вычислительных ресурсов:

Выделенный режим доступа

Для вычислений с выделенным режимом доступа используйте SparkContext.setCheckpointDir:

spark.checkpoint.dir=/Volumes/<catalog>/<schema>/<volume>/checkpoint
Стандартный режим доступа

Для вычислений с стандартным режимом доступа используйте конфигурацию spark.checkpoint.dir Spark:

spark.conf.set("spark.checkpoint.dir", "/Volumes/<catalog>/<schema>/<volume>/checkpoints")

Создание контрольной точки DataFrame

После настройки каталога контрольных точек используйте DataFrame.checkpoint() для усечения плана выполнения и сохранения данных:

df = spark.range(100).withColumn("doubled", col("id") * 2)
checkpointed_df = df.checkpoint()

Замечание

Контрольные точки DataFrame отличаются от контрольных точек в Structured Streaming. Сведения о хранении данных контрольной точки потоковой передачи в томах см. в разделе "Структурированная потоковая передача".

Вывод списка и запроса файлов в томах с помощью SQL

Функцию read_files SQL с табличным значением можно использовать для перечисления файлов в томе и запроса их метаданных. Это полезно для обнаружения файлов, фильтрации по свойствам файла и подготовки файлов для обработки с помощью функций ИИ.

При использовании READ_FILESformat => "binaryFile"функция возвращает таблицу со следующими столбцами:

  • path: полный путь к файлу
  • modificationTime: метка времени последнего изменения
  • length: размер файла в байтах
  • content: необработанное содержимое файла в виде двоичных данных

Вы также можете выбрать _metadata столбец, чтобы получить доступ к дополнительным сведениям о файле, включая file_path, file_namefile_sizeи file_modification_time.

Перечислить все файлы в томе

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

SELECT
  * EXCEPT (content),
  _metadata
FROM read_files(
  "/Volumes/<catalog>/<schema>/<volume>",
  format => "binaryFile"
);

Фильтрация файлов по типу и размеру

В следующем примере фильтры файлов изображений в диапазоне от 20 КБ до 1 МБ:

SELECT * EXCEPT (content), _metadata
FROM read_files(
  "/Volumes/my_catalog/my_schema/my_volume",
  format => "binaryFile",
  fileNamePattern => "*.{jpg,jpeg,png,JPG,JPEG,PNG}"
)
WHERE _metadata.file_size BETWEEN 20000 AND 1000000;

Фильтрация файлов по времени изменения

Следующий пример находит PDF-файлы, измененные в последний день:

SELECT * EXCEPT (content), _metadata
FROM read_files(
  "/Volumes/my_catalog/my_schema/my_volume",
  format => "binaryFile",
  fileNamePattern => "*.{pdf,PDF}"
)
WHERE modificationTime >= current_timestamp() - INTERVAL 1 DAY;

Обработка изображений с помощью функций ИИ

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

SELECT
  path AS file_path,
  ai_query(
    'databricks-llama-4-maverick',
    'Describe this image in ten words or less: ',
    files => content
  ) AS result
FROM read_files(
  "/Volumes/my_catalog/my_schema/my_volume",
  format => "binaryFile",
  fileNamePattern => "*.{jpg,jpeg,png}"
)
WHERE _metadata.file_size < 1000000
  AND _metadata.file_name LIKE '%robots%';

Анализ документов с помощью функций ИИ

В следующем примере функция ai_parse_document используется для извлечения структурированных данных из PDF-квитанций:

SELECT
  path AS file_path,
  ai_parse_document(content, map('version', '2.0')) AS result
FROM read_files(
  "/Volumes/main/public/my_files/",
  format => "binaryFile",
  fileNamePattern => "*.{pdf,PDF}"
)
WHERE _metadata.file_name ILIKE '%receipt%';

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

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