Что такое автозагрузчик?

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

Как работает автозагрузчик?

Автозагрузчик поэтапно и эффективно обрабатывает новые файлы данных по мере их поступления в облачное хранилище. Он предоставляет источник потоковой передачи под названием cloudFiles, который является структурированным. При наличии пути к входному каталогу в облачном хранилище файлов источник cloudFiles автоматически обрабатывает новые файлы по мере их поступления, при этом также обрабатывает существующие файлы в этом каталоге. Автозагрузчик поддерживает как Python, так и SQL в конвейерах Lakeflow.

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

Поддерживаемые источники автозагрузчика

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

  • Amazon S3 (s3://)

  • Azure Data Lake Storage (ADLS, abfss://)

  • Google Cloud Storage (GCS, gs://)

  • Тома каталога Unity (/Volumes/)

  • Хранилище BLOB-объектов Azure (wasbs://)

    Note

    Устаревший драйвер Blobs для Windows служба хранилища Azure (WASB) объявлен устаревшим. ABFS имеет множество преимуществ по сравнению с WASB. См. документацию Azure по ABFS. Документация по работе с устаревшим драйвером WASB см. в разделе Connect to Хранилище BLOB-объектов Azure with WASB (legacy).

Автозагрузчик может принимать форматы файлов JSON, CSV, XML, PARQUET, AVRO, ORC, TEXT и BINARYFILE. Автозагрузчик также поддерживает чтение предварительно сжатых файлов в этих форматах. Поддерживаемые типы сжатия по формату см. в разделе "Параметры формата данных".

Доступно в бета-версии, вы можете загружать файлы как FILE ссылки. Например, вы можете непрерывно вводить документы или изображения из каталога в таблицу по мере поступления новых файлов. Смотрите файлы Ingest как тип FILE.

Как Auto Loader отслеживает прогресс загрузки данных?

По мере обнаружения файлов их метаданные сохраняются в масштабируемом хранилище пар "ключ — значение" (RocksDB) в расположении контрольной точки конвейера Автозагрузчика. Это хранилище пар "ключ — значение" гарантирует, что данные обрабатываются только один раз.

В случае сбоев Auto Loader может возобновить работу с того места, где остановился, используя информацию, хранящуюся в месте контрольной точки, и продолжать обеспечивать гарантию точной одноразовой записи данных в Delta Lake. Вам не нужно поддерживать или управлять каким-либо состоянием самостоятельно, чтобы обеспечить отказоустойчивость или точно один раз семантику.

Инкрементальная загрузка данных с использованием Auto Loader в конвейерах Lakeflow

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

Databricks также рекомендует Auto Loader при использовании структурированной потоковой передачи Apache Spark для приема данных из облачного хранилища объектов. API доступны в Python и Scala.

Как начать работу с автозагрузчиком Databricks

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

Примеры. Распространенные шаблоны автозагрузчика

Примеры распространенных шаблонов автозагрузчика см. в разделе Общие шаблоны загрузки данных.

Настройка параметров автозагрузчика

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

Настройка автозагрузчика

Автозагрузчик можно настроить на основе объема данных, разнообразия и скорости.

Если вы столкнулись с непредвиденным поведением, ознакомьтесь с разделом FAQ об автозагрузчике.

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

Автозагрузчик поддерживает два режима обнаружения файлов. По умолчанию автозагрузчик использует режим перечисления каталогов. Однако Databricks рекомендует режим уведомлений о файлах с помощью событий файлов для большинства рабочих нагрузок. See:

Обработать неупорядоченные данные

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

Конвейеры Lakeflow с AUTO CDC

Если вы используете конвейеры Lakeflow с Auto Loader и AUTO CDC, настройте хранение tombstone-данных так, чтобы удаленные записи сохранялись достаточно долго для обработки файлов, поступающих не по порядку. Присвойте свойству pipelines.cdc.tombstoneGCThresholdInSeconds таблицы целевой потоковой передачи значение, превышающее максимальную ожидаемую задержку между прибытием события и выполнением конвейера. Срок хранения по умолчанию — два дня. Дополнительные сведения см. в разделе create_auto_cdc_flow.

Структурированная потоковая передача без конвейеров Lakeflow

Если вы используете структурированную потоковую обработку Apache Spark напрямую с Auto Loader (без пайплайнов Lakeflow), рассмотрите следующие шаблоны для обработки данных, поступающих не по порядку:

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

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

В Apache Spark можно выполнять добавочное чтение файлов с помощью spark.readStream.format(fileFormat).load(directory). Автозагрузчик обеспечивает следующие преимущества по сравнению с источником файлов.

  • Масштабируемость — Автозагрузчик может эффективно обнаруживать миллиарды файлов. Операции обратного заполнения могут выполняться асинхронно, чтобы вычислительные ресурсы не тратились впустую.
  • Производительность — стоимость обнаружения файлов с помощью Автозагрузчика зависит от количества принимаемых файлов, а не от количества каталогов, в которых эти файлы могут находиться. См. статью "Настройка потоков автозагрузчика" в режиме перечисления каталогов.
  • Поддержка вывода схемы и эволюции: автозагрузчик может обнаруживать смещения схем, уведомлять вас о том, когда происходят изменения схемы, и спасать данные, которые были бы в противном случае проигнорированы или потеряны. См. Как работает вывод схемы автозагрузчика?.
  • Стоимость: автозагрузчик использует собственные облачные API для получения списков файлов, существующих в хранилище. Кроме того, режим уведомлений о файлах автозагрузчика может помочь сократить затраты на облако, избегая перечисления каталогов в целом. Автозагрузчик может автоматически настроить службы уведомлений о файлах в хранилище, чтобы сделать обнаружение файлов гораздо дешевле.