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

Часто задаваемые вопросы об Автозагрузчике 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.

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

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

Как Автозагрузчик выводит схему?

При первом определении DataFrame Автозагрузчик выводит список содержимого исходного каталога и выбирает последние (по времени изменения файлов) 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 для явного анализа столбцов из структуры каталогов.

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

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

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

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

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

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

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

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