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


Автозагрузчик: вопросы и ответы

Часто задаваемые вопросы об Автозагрузчике Databricks.

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

Файлы обрабатываются только один раз, если не включен элемент cloudFiles.allowOverwrites. При добавлении или перезаписи файла Azure Databricks не может гарантировать, какая версия файла будет обработана. При включении cloudFiles.allowOverwrites в режиме уведомлений о файлах следует также использовать осторожность, где автозагрузчик может определять новые файлы как с помощью уведомлений о файлах, так и в списке каталогов. Из-за несоответствия между временем события уведомления о файлах и временем изменения файла автозагрузчик может получить две разные метки времени и, следовательно, прием одного и того же файла дважды, даже если файл записывается только один раз.

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

Если мои файлы данных поступают не регулярно, но через равные интервалы времени, например, раз в день, стоит ли мне по-прежнему использовать этот источник, и есть ли какие-то преимущества его использования?

В этом случае можно настроить задачу на структурированную потоковую передачу Trigger.AvailableNow (доступно в Databricks Runtime 10.4 LTS и выше) и запланировать её выполнение на время после ожидаемого прибытия файла. Автозагрузчик хорошо работает как с редкими, так и с частыми обновлениями. Даже если итоговые обновления очень велики, Автозагрузчик хорошо масштабируется до размера входных данных. Эффективные методы обнаружения файлов и возможности эволюции схемы Автозагрузчика делают его рекомендуемым способом пошаговой загрузки данных.

Что произойдет, если изменить расположение контрольной точки при перезапуске потока?

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

Нужно ли заранее создавать службы уведомлений о событиях?

№ Если выбран режим уведомлений о файлах и предоставлены необходимые разрешения, то Автозагрузчик может сам создавать службы уведомлений о файлах. См. раздел "Что такое режим уведомлений о файлах автозагрузчика"?

Как очистить ресурсы уведомлений о событиях, созданные Автозагрузчиком?

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

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

Да, если они не являются каталогами со связью типа "родители-потомки". Например, prod-logs/ и prod-logs/usage/ не будут работать, поскольку /usage является дочерним каталогом /prod-logs.

Можно ли использовать эту функцию при наличии существующих уведомлений о файлах в контейнере?

Да, если входной каталог не конфликтует с префиксом существующего уведомления (например, приведенные выше каталоги со связью типа "родители-потомки").

Как Auto Loader определяет схему?

Когда DataFrame создается впервые, Auto Loader выводит ваш исходный каталог и выбирает наиболее недавние данные объёмом 50 ГБ или 1000 файлов (по времени изменения файлов) и использует их для вывода схемы данных.

Автозагрузчик также определяет столбцы разделов, изучая структуру исходного каталога и выполняя поиск путей к файлам, содержащих структуру /key=value/. Если исходный каталог имеет непоследовательную структуру, например:

base/path/partition=1/date=2020-12-31/file1.json
// inconsistent because date and partition directories are in different orders
base/path/date=2020-12-31/partition=2/file2.json
// inconsistent because the date directory is missing
base/path/partition=3/file3.json

Автозагрузчик определяет разделительные колонки как пустыми. Используйте cloudFiles.partitionColumns для явного анализа столбцов из структуры каталогов.

Что делает Автозагрузчик, если исходная папка пуста?

Если исходный каталог пуст, "Auto Loader" требует, чтобы вы предоставили схему, так как нет данных для выполнения вывода.

Когда автозагрузчик определяет схему? Выполняет ли он развитие автоматически после каждого микропакета?

Схема определяется при первом определении DataFrame в вашем коде. Во время обработки каждого микропакета изменения схемы оцениваются динамически, так что вам не нужно беспокоиться о падении производительности. Когда поток перезапускается, он берёт обновлённую схему из местоположения схемы и начинает работу без каких-либо накладных расходов из-за вывода.

Каково влияние на производительность при приеме данных при использовании определения схемы автозагрузки?

Вы должны ожидать, что вывод схемы занимает несколько минут для очень больших исходных каталогов во время вывода начальной схемы. В противном случае при выполнении потока не следует ожидать значительного снижения производительности. Если вы запускаете код в записной книжке Azure Databricks, вы увидите обновления состояния, указывающие, когда Auto Loader будет сканировать ваш каталог для выборки и определения схемы данных.

Из-за ошибки плохой файл резко изменил мою схему. Что следует сделать, чтобы отменить изменение схемы?

Обратитесь за помощью в службу поддержки Databricks.