Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Important
Эта функция доступна в бета-версии. Администраторы рабочей области могут управлять доступом к этой функции на странице "Предварительные версии ". См. статью "Управление предварительными версиями Azure Databricks".
Тип FILE хранит регулируемую ссылку на неструктурированный файл с метаданными, такими как путь и размер. Используйте FILE столбцы в Unity Catalog для хранения документов, изображений и аудио вместе со структурированными данными.
Для таблиц с FILE MANAGED столбцами Unity Catalog хранит копии файлов и управляет ими через таблицу: при удалении строк файлы, на которые ссылается таблица, становятся доступными для сборки мусора, благодаря чему таблица и её файлы остаются синхронизированными.
Сведения о типе см. FILE тип.
На следующей диаграмме показан столбец FILE с именем video, который содержит ссылки на видеоклипы вождения наряду со структурированными столбцами, такими как маршрут, описание сцены и метка опасности:
Метаданные и хранение FILE
Для каждой строки FILE тип хранит метаданные и регулируемую ссылку на файл в хранилище. Значение FILE включает поля метаданных uri, size, content_type и checksum. Запросы к метаданным не требуют полного чтения файлов, что повышает производительность запросов.
Вы можете передавать FILE значения функциям ИИ, таким как ai_parse_document функциям, и пользовательским функциям (UDF).
Следующая диаграмма показывает пример управляемого FILE столбца, содержащего метаданные по путям и размеру, а также ссылки на файлы в хранилище:
Доступ к метаданным и контенту
Значение FILE состоит из двух частей, и доступ к каждой регулируется по-разному:
- Метаданные файла (
uri,size,content_type, иchecksum) хранятся в собственных файлах данных таблицы. Любой, у кого на столе лежитSELECT, может её прочитать. - Содержимое файла остаётся в хранилище. Для их чтения требуется доступ к файлу
READ VOLUMEна базовом томе дляFILE EXTERNALлибо доступ и к таблице, и к тому, на котором размещёнFileSpace, дляFILE MANAGED.
Преобразование значения FILE в BINARY или STRING, передача его в AI-функцию или UDF и его предварительный просмотр в таблице результатов — во всех этих случаях считывается содержимое файлов. Поскольку метаданные являются частью таблицы, путь и размер файла видны любому, кто может запросить таблицу, даже без доступа к содержимому.
Для предварительного просмотра файлов в результатах запроса смотрите Предпросмотр файлов в столбцах FILE.
Почему использовать FILE вместо BINARY или STRING?
В следующей таблице представлены сложности, возникающие при обработке больших неструктурированных файлов типов BINARY или STRING:
| Тип столбца | Description | Diagram |
|---|---|---|
BINARY |
Материализует полный объект для каждого чтения, даже если нужны только метаданные, такие как размер файла или путь. Это приводит к ненужным вычислениям и медленным запросам. |
|
STRING |
Сохраняет путь файла без метаданных, таких как размер или информация о версии, и без регулируемой связи между таблицей и файлом. Если другая нагрузка удаляет файл, таблица сохраняет устаревшую информацию. Если удалить строку таблицы, файл, на который она ссылается, останется в хранилище, пока вы не удалите его вручную. |
|
Контрольные суммы
Поле checksum является токеном целостности для байтов файла вида <prefix>:<digest>. Используйте его для сравнения файлов или проверки, что файл не изменился. Читатели игнорируют контрольную сумму с нераспознанным префиксом.
Контрольная сумма не всегда доступна.
to_file
функция, create_file функция и copy_file функция заполняют контрольную сумму, когда хранилище объектов возвращает ETAG.
list_files Функция с таблицным значением и read_files функция с таблицьным значением не заполняют контрольную сумму.
Поле использует один из следующих префиксов:checksum
| Префикс | Кодирование дайджеста | Description |
|---|---|---|
ETAG |
Opaque | eTag объектного хранилища для всего файла. Предоставляется дословно магазином, используется только для сравнения равенств и не поддается повторному вычислению. |
MD5 |
Строчные шестнадцатеричные символы | MD5 дайджест (RFC 1321), 32 шестигранных символа. |
CRC32 |
Строчные шестнадцатеричные символы | Контрольная сумма CRC32 (RFC 2083), 8 шестнадцатеричных символов. |
CRC32C |
Строчные шестнадцатеричные символы | Контрольная сумма CRC32C (RFC 3385), 8 шестнадцатеричных символов. |
SHA-256 |
Строчные шестнадцатеричные символы | Дайджест SHA-256 (RFC 6234), 64 шестигранных символа. |
Например, контрольная сумма MD5 выглядит как MD5:d41d8cd98f00b204e9800998ecf8427e, а eTag объектного хранилища — как ETAG:"686897696a7c876b7e", включая окружающие двойные кавычки, возвращаемые хранилищем объектов.
Выбирайте между FILE и BINARY
В следующей таблице сравниваются варианты работы с неструктурированными файлами:
| Тип столбца | Ценности | Сценарий использования |
|---|---|---|
FILE |
Регулируемая ссылка на файл плюс метаданные (uri, size, content_type, checksum). |
Используется для управления и обработки неструктурированных файлов вместе со структурированными данными, а также передачи файлов встроенным и AI-функциям. |
BINARY |
Необработанные байты файла, встроенные в колонку. | Используйте для небольших объектов (до 64 КБ по умолчанию), хранящихся непосредственно в файле данных. Это полезно, когда нужны низкие накладные расходы на метаданные и упрощённое управление файлами. Например, используйте это для хранения миниатюр непосредственно вместе с данными строки. |
УПРАВЛЯЕМЫЙ ФАЙЛ И ВНЕШНИЙ ФАЙЛ
Тип FILE поддерживает два подхода к управлению файлами:
-
FILE MANAGEDстолбцы копируют файлы в управляемое хранилище. Разрешения упрощены и управляются в таблице. Когда вы удаляете строки или обновляете их так, чтобы они ссылались на другие файлы, файлы, на которые больше нет ссылок, могут быть удалены сборщиком мусора, поэтому таблица и её файлы остаются синхронизированными. Используйте этот подход для сценариев, в которых доступ к файлам осуществляется через таблицу, например для обучения моделей машинного обучения или генерации, дополненной поиском (RAG), а также для файлов, загруженных из внешних источников. Сведения о шаблонах загрузки см. в разделе Загрузка файлов как тип FILE. -
FILE EXTERNALстолбцы ссылаются на существующие файлы в томе Unity Catalog. Файлы защищены разрешениями на тома в Unity Catalog, но их жизненным циклом Unity Catalog не управляет, и сами файлы не копируются. Используйте этот подход, когда нужно делать ссылки на файлы, не перемещая данные и не мешая инструментам, читающим данные с существующего тома.
Azure Databricks рекомендует FILE MANAGED для рабочих нагрузок, которым полезны разрешения на уровне файлов и встроенные средства обеспечения соответствия: доступ к каждому файлу регулируется через таблицу, которая на него ссылается, а удаление строк делает файлы, на которые есть ссылки, доступными для сборки мусора. Используйте FILE EXTERNAL, когда файлы должны оставаться на своих существующих путях томов для инструментов, которые читают их вне таблицы.
Для запросов нет разницы между управляемыми и внешними файлами.
Следующая схема показывает, как FILE тип связывает ваш код с файлами в облачном объектном хранилище:
FILE MANAGED
Столбцы FILE MANAGED хранят копии файлов в FileSpace, томе Unity Catalog, который вы назначаете таблице в качестве управляемого хранилища. Их жизненный цикл связан с таблицами, на которые они ссылаются: удаление строк делает ссылки на файлы подходящими для сборки мусора, поэтому таблица и её файлы остаются синхронизированы.
Следующие поведения применимы к FILE MANAGED:
- Для объявления
FileSpaceтребуется табличное свойствоdatabricks.filespace-preview. - Для чтения или записи управляемого файла требуется доступ как к таблице, так и к тому, который лежит в основе
FileSpace. - Автоматический сбор мусора из несвязанных файлов не поддерживается в бета-версии.
Неструктурированные файлы, хранящиеся во внешних источниках, таких как SharePoint, Google Drive, OneDrive и SFTP, должны быть введены в управляемые файлы, прежде чем вы сможете использовать их с функциями, такими как ai_parse_document функциональные и пользовательские функции (UDF). Сведения о сценариях загрузки см. в разделе Загружайте файлы как тип FILE.
Чтобы использовать управляемые файлы, создайте таблицу со столбцом FILE MANAGED и укажите том в качестве FileSpace, задав свойству таблицы databricks.filespace-preview путь к тому:
'databricks.filespace-preview' = '/Volumes/<catalog>/<schema>/<volume_name>/<optional_path>'
Для полных примеров см. следующие FILE MANAGED примеры.
примеры FILE MANAGED
Чтобы создать таблицу со FILE MANAGED столбцом:
CREATE TABLE reports (id BIGINT, file FILE MANAGED)
TBLPROPERTIES ('databricks.filespace-preview' = '/Volumes/my_catalog/my_schema/my_managed_volume/');
Чтобы добавить FILE MANAGED столбец к существующей таблице, задайте свойство databricks.filespace-preview таблицы перед добавлением столбца, как в следующем коде:
ALTER TABLE reports SET TBLPROPERTIES ('databricks.filespace-preview' = '/Volumes/my_catalog/my_schema/my_managed_volume/');
ALTER TABLE reports ADD COLUMN attachment FILE MANAGED;
Добавление столбца FILE MANAGED в таблицу, в которой нет FileSpace, не удаётся.
Удалить управляемые файлы без ссылки
Поскольку автоматическая сборка мусора не поддерживается, удаляйте файлы, на которые больше нет ссылок, вручную. Следующий блокнот находит файлы в формате FileSpace , на который ни одна версия таблицы не ссылается, и по желанию удаляет их:
Блокнот FileType для сборки мусора
FILE EXTERNAL
FILE EXTERNAL столбцы — это ссылки на файлы, уже существующие в томе каталога Unity.
Если у вас есть необходимые привилегии в томе, вы можете обновить или удалить эти файлы. Databricks рекомендует использовать неизменяемые файлы. Разрешение на доступ к таблице предоставляет доступ к метаданным файла, но для чтения байтов файла также требуется привилегия READ VOLUME к базовому тому.
Внешний файл сопоставляет каждую строку таблицы с файлом по существующему пути в томе Unity Catalog:
примеры FILE EXTERNAL
Чтобы создать таблицу со FILE EXTERNAL столбцом:
CREATE TABLE documents (id BIGINT, file FILE EXTERNAL);
Чтобы добавить FILE EXTERNAL столбец в существующую таблицу:
ALTER TABLE documents ADD COLUMN file FILE EXTERNAL;
Чтобы создать и заполнить таблицу из тома, каждому файлу присваиваются уникальные идентификаторы:
CREATE TABLE documents AS
SELECT monotonically_increasing_id() AS id, file
FROM list_files('/Volumes/samples/sec/contracts/');
Сравнение управления и жизненного цикла
В следующей таблице сравнивается, как FILE MANAGED и FILE EXTERNAL управляется доступ к файлам, а также обработка жизненного цикла файла:
| Тип столбца | FILE MANAGED |
FILE EXTERNAL |
|---|---|---|
| Контроль доступа к файлам | Определяется разрешениями для таблицы и тома, например SELECT для таблицы и READ VOLUME для тома. |
Регулируется разрешениями объёма, такими READ VOLUMEкак . |
| Жизненный цикл и сборка мусора | Файлы привязаны к строкам, которые на них ссылаются. Удаление этих строк делает файлы подходящими для сборки мусора. Автоматический сбор мусора не поддерживается. | Вы сами управляете файлами. Удаление строки таблицы не влияет на базовый файл в томе. |
Сценарии использования типа FILE
Как управляемые, так и внешние FILE типы решают следующие задачи при использовании неструктурированных данных:
| Задача | Поддерживаемый FILE тип |
Benefits |
|---|---|---|
Файлы, слишком большие для хранения в строке как BINARY |
FILE MANAGED или FILE EXTERNAL |
Столбец FILE хранит ссылку, поэтому файл читается только тогда, когда его обрабатывает функция ИИ или UDF. Это позволяет избежать материализации крупных объектов непосредственно в таблице. |
| Разрыв жизненного цикла и управления между файловой системой и таблицей | FILE MANAGED |
Azure Databricks привязывает жизненный цикл каждого файла к таблице, поэтому при удалении строк эти файлы становятся кандидатами на очистку, а не остаются в хранилище как неиспользуемые файлы. |
| Параллельные нагрузки, требующие сохранения файлов в одном и том же месте | FILE EXTERNAL |
Файлы остаются по своим существующим путям в томе и не зависят от жизненного цикла таблицы, поэтому работа других инструментов, которые читают те же файлы, не нарушается. |