Обзор автозагрузчика с событиями файлов

Параметр cloudFiles.useManagedFileEvents с автозагрузчиком обеспечивает эффективное обнаружение файлов.

Как работает Auto Loader с событиями файлов?

Автозагрузчик с событиями файлов использует функции уведомлений о событиях файлов, предоставляемых поставщиками облачных служб. Контейнеры облачного хранилища можно настроить для публикации уведомлений о событиях файлов, таких как создание и изменение файла. Например, с уведомлениями о событиях Amazon S3 новый файл может активировать уведомление в разделе Amazon SNS (дополнительные сведения см. в структуре содержимого уведомлений Amazon S3 ). Затем вы можете подписать очередь Amazon SQS на тему SNS для асинхронной обработки события.

Системы уведомлений о событиях облачного хранилища

Служба Azure Databricks File Events настраивает облачные ресурсы для отслеживания изменений с файлами. Кроме того, вы можете самостоятельно настроить облачные ресурсы и предоставить собственную очередь хранилища.

После настройки облачных ресурсов служба обрабатывает уведомления о событиях файлов и кэширует метаданные файлов. Авто загрузчик использует этот кэш для обнаружения файлов, когда он запускается с установленным значением cloudFiles.useManagedFileEventstrue.

Автозагрузчик с событиями файлов

При первом запуске потока с cloudFiles.useManagedFileEvents заданным значением true, Auto Loader выполняет полный список файлов в пути загрузки для обнаружения всех файлов и синхронизации с кэшем событий файлов (устанавливает допустимую позицию для чтения в кэше и сохраняет ее в контрольной точке потока). Последующие запуски автозагрузчика обнаруживают новые файлы, считывая непосредственно из кэша событий файлов, используя сохраненную позицию чтения и не требуя перечисления каталогов.

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

Режим событий файлов и классический режим уведомлений о файлах

На этой схеме сравниваются режим событий файлов и классический режим уведомлений о файлах.

Параллельное сравнение режима событий файлов (слева) и классического режима уведомлений о файлах (справа).

В режиме событий файлов одна управляемая служба событий файлов подключается к облачному хранилищу клиента. Он создает одну общую тему SNS, очередь SQS и подписку SNS-to-SQS, которая обслуживает нескольких потребителей, включая автозагрузчик и триггеры. В классическом режиме уведомлений о файлах каждому потребителю требуется собственная подписка на события и очередь, что приводит к нескольким отдельным конвейерам уведомлений на контейнер.

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

Когда автозагрузчик с событиями файлов использует список каталогов?

Автозагрузчик выполняет полный список каталогов, когда:

  • Запуск нового потока.
  • Перенос потока из списка каталогов или классических уведомлений о файлах.
  • Автозагрузчик с событиями файлов не выполняется более семи дней.
  • Вы обновляете внешнее местоположение, что делает недействительной позицию чтения автозагрузчика. Примеры включают в себя выключение и повторное включение событий файлов, изменение пути к внешнему расположению, или предоставление другой очереди для внешнего расположения.

Автозагрузчик всегда выполняет полный список при первом запуске, даже если includeExistingFiles задано значение false. Этот флаг позволяет обрабатывать все файлы, созданные после начала потока. Автозагрузчик перечисляет весь каталог для обнаружения всех файлов, созданных после времени начала потока, устанавливает позицию чтения в кэше событий файлов и сохраняет его в контрольной точке. Последующие запуски считываются непосредственно из кэша событий файлов и не требуют перечисления каталога.

Служба событий файлов Azure Databricks также выполняет полное перечисление каталогов во внешнем местоположении, чтобы убедиться, что она не пропустила ни одного файла (например, если указанная очередь неправильно настроена). Первый полный список каталогов начинается сразу после включения событий файлов во внешнем расположении. Каждое последующее обновление происходит через 24 часа после последнего полного сканирования, если существует по крайней мере один поток Auto Loader, использующий события файлов для приема данных.

Рекомендации по автозагрузчику с событиями файлов

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

Использование томов для оптимального обнаружения файлов

Для повышения производительности Databricks рекомендует создать внешний том для каждого пути или подкаталога, из которого Auto Loader загружает данные, и предоставлять пути тома (например, ) для Auto Loader вместо облачных путей (например, /Volumes/someCatalog/someSchema/someVolume). Это оптимизирует обнаружение файлов, так как Auto Loader может перечислить том с помощью оптимизированного паттерна доступа к данным.

Рассмотрите триггеры прибытия файлов для конвейеров на основе событий

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

Настройте соответствующие интервалы с непрерывными триггерами

Databricks рекомендует использовать триггеры прибытия файлов для обработки файлов сразу после их поступления. Однако, если в вашем сценарии использования требуется более низкая задержка при использовании непрерывных триггеров, таких как Trigger.ProcessingTime, Databricks рекомендует настроить интервалы срабатывания на уровне 1 minute или выше. В конвейерах Lakeflow задайте это значение с помощью pipelines.trigger.interval. Это снижает частоту опроса, чтобы проверить, прибыли ли новые файлы, и позволяет большему количеству потоков работать одновременно из вашей рабочей области.

Для очень низкой задержки рекомендуется использовать классический режим уведомлений о файлах . События файлов добавляют дополнительный уровень кэширования между облачным хранилищем и Auto Loader, что может увеличить задержку по сравнению с прямым чтением из облачной очереди.

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

Автозагрузчик не поддерживает перезаписи путей. Перезаписи путей применяются при подключении нескольких бакетов или контейнеров к DBFS, что является устаревшим шаблоном использования.

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

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