Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Найдите ответы на часто задаваемые вопросы о автозагрузчике Databricks.
Обрабатывает ли автоматический загрузчик файл снова, когда файл добавляется или перезаписывается?
С параметромcloudFiles.allowOverwrites = false по умолчанию () файлы обрабатываются ровно один раз. При добавлении или перезаписи файла автозагрузчик не может гарантировать, какая версия файла будет обработана.
Чтобы разрешить автозагрузчику снова обрабатывать файл при добавлении или перезаписи, можно задать значение cloudFiles.allowOverwritestrue. В этом случае автозагрузчик гарантированно обрабатывает последнюю версию файла. Однако автозагрузчик не может гарантировать, какая промежуточная версия обрабатывается.
Используйте осторожность, если включить cloudFiles.allowOverwrites в режиме уведомлений о файлах. В режиме уведомлений о файлах автозагрузчик может определять новые файлы как с помощью уведомлений о файлах, так и в списке каталогов. Так как время события уведомления о файлах и время изменения файла могут отличаться, автозагрузчик может получать две разные метки времени и принимать один и тот же файл дважды, даже если файл не был обновлен.
С cloudFiles.allowOverwrites включенным необходимо самостоятельно обрабатывать повторяющиеся записи. Автозагрузчик повторно обрабатывает весь файл, даже если он добавляется или частично обновляется. Как правило, Azure Databricks рекомендует использовать автозагрузчик для приема неизменяемых файлов только и использовать параметр cloudFiles.allowOverwrites = falseпо умолчанию. Если у вас есть дополнительные вопросы, обратитесь к группе учетной записи Azure Databricks.
Как автозагрузчик определяет, был ли файл приемлен или нет?
Автозагрузчик обычно загружает каждый файл только один раз на основе пути к файлу. Однако если установить для параметра allowOverwrites значение true, Auto Loader также использует временную метку последнего изменения файла, чтобы определить, является ли файл новым или был обновлён и нужно ли повторно загрузить его. Просмотрите , обрабатывает ли автоматический загрузчик файл снова, когда файл добавляется или перезаписывается?
Если мои файлы данных поступают не регулярно, но через равные интервалы времени, например, раз в день, стоит ли мне по-прежнему использовать этот источник, и есть ли какие-то преимущества его использования?
В этом случае можно настроить задачу на структурированную потоковую передачу Trigger.AvailableNow (доступно в Databricks Runtime 10.4 LTS и выше) и запланировать её выполнение на время после ожидаемого прибытия файла. Автозагрузчик хорошо работает как с редкими, так и с частыми обновлениями. Даже если итоговые обновления очень велики, Auto Loader хорошо масштабируется с учетом размера входных данных. Эффективные методы обнаружения файлов Автозагрузчика и возможности эволюции схемы делают Автозагрузчик рекомендуемым методом для поэтапного приема данных.
Как 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.
Что произойдет, если изменить расположение контрольной точки при перезапуске потока?
Расположение контрольной точки содержит важную идентифицирующую информацию о потоке. Изменение расположения контрольной точки фактически означает, что вы прервали предыдущий поток и запустили новый.
Нужно ли создавать службы уведомлений о событиях заранее?
№ Если выбран режим уведомлений о файлах и предоставлены необходимые разрешения, то Автозагрузчик может сам создавать службы уведомлений о файлах. См. раздел "Управление очередями уведомлений о файлах" для каждого потока автозагрузчика отдельно (классическая модель).
Если события файлов включены во внешнем расположении в каталоге Unity, служба событий файлов может создать события файлов в поставщике облачных служб, и вам не нужно настроить автозагрузчик, чтобы создать их для каждого потока. См . раздел "Использование режима уведомлений файлов" с событиями файлов
Можно ли выполнять несколько запросов потоковой передачи из разных входных каталогов в одном контейнере?
Да, если они не являются каталогами со связью типа "родители-потомки". Например, prod-logs/ и prod-logs/usage/ не будут работать, поскольку /usage является дочерним каталогом /prod-logs.
Можно ли использовать эту функцию, когда в моем бакете или контейнере есть существующие уведомления о файлах?
Да, если ваш входной каталог не конфликтует с префиксом существующего уведомления (например, если речь идет о родительских и дочерних каталогах, как указано выше).
Можно ли совместно использовать очередь SQS между автозагрузчиком и другими приложениями?
Databricks не рекомендует совместно использовать очередь SQS между автозагрузчиком и другими приложениями. Вместо этого перенаправьте уведомления о событиях S3 в раздел SNS, а затем подпишите отдельную очередь SQS для каждого приложения в этом разделе. Используйте политику фильтрации подписок SNS, чтобы убедиться, что только соответствующие сообщения перенаправляются в каждую очередь. Затем предоставьте выделенную очередь автозагрузчику.
Как убедиться, что события файлов настроены правильно?
Нажмите кнопку "Проверить подключение" на странице внешнего расположения. Если вы правильно настроили события файлов, вы увидите зеленый флажок для элемента "Чтение событий файлов ". Если вы только что создали внешнюю локацию и включили события файлов в режиме Automatic, тест показывает Skipped, пока в Azure Databricks настраиваются уведомления для внешней локации. Подождите несколько минут, а затем снова нажмите кнопку "Проверить подключение ". Если у Azure Databricks нет необходимых разрешений для настройки или чтения из событий файла, появится сообщение об ошибке элемента File Events Read.
Можно ли избежать полного перечисления каталога во время первоначального запуска?
№ Даже если includeExistingFiles имеет значение false, автозагрузчик выполняет перечисление каталогов для обнаружения файлов, созданных после начала потока, и актуализирует кэш событий файлов (обеспечение допустимой позиции чтения в кэше и сохранение её в контрольной точке потока).
Нужно ли задать параметр cloudFiles.backfillInterval , чтобы избежать отсутствия файлов?
№ Azure Databricks ранее рекомендовал этот параметр для классического режима уведомлений файлов, так как системы уведомлений облачного хранилища могут привести к пропущенным или поздним поступлениям файлов. Теперь Azure Databricks выполняет полные списки каталогов во внешнем расположении. Первый полный список каталогов начинается сразу после включения событий файлов во внешнем расположении. Каждое последующее обновление происходит через 24 часа после последнего полного сканирования, если существует по крайней мере один поток Auto Loader, использующий события файлов для приема данных.
Я настроила файловые события с предоставленной очередью хранилища, но очередь была неправильно настроена, и я пропустила файлы. Как убедиться, что автозагрузчик отправляет пропущенные файлы при неправильной настройке очереди?
Сначала убедитесь, что неправильно настроенная очередь исправлена. Чтобы проверить, нажмите кнопку Проверить подключение на странице внешнего ресурса. Если вы правильно настроили события файла, для элемента чтения событий файлов появится зеленая галочка.
Azure Databricks выполняет полное перечисление директорий для внешних местоположений с активированными событиями файлов. В этом списке каталога обнаруживаются файлы, пропущенные в период неправильной настройки, и хранятся в кэше событий файлов.
После исправления неправильной настройки и завершения Azure Databricks описания каталога, Автозагрузчик продолжает считывать из кэша событий файлов и автоматически принимает все файлы, пропущенные в течение периода неправильной настройки.
Как восстановиться после CF_MANAGED_FILE_EVENTS_INVALID_CONTINUATION_TOKEN ошибки?
Эта ошибка возникает, когда маркер продолжения, хранящийся в контрольной точке автозагрузчика для службы событий файлов, стал недействительным.
Некоторые распространенные причины:
-
cloudFiles.useManagedFileEventsбыл отключен, а затем снова включен. - Изменение внешней позиции или объема источника.
- Изменение предоставленной очереди.
- Изменение параметров
cloudFiles.allowOverwritesилиcloudFiles.readChangeFeed.
Чтобы восстановить:
- Задайте
.option("cloudFiles.listOnStart", "true")и.option("cloudFiles.validateOptions", false)в потоковом запросе. - Перезапустите поток. Автозагрузчик осуществляет полный перечень содержимого директорий на старте и пропускает недопустимый маркер продолжения.
- После успешного микропакета удалите оба параметра и перезапустите поток.
Дополнительные сведения о параметре cloudFiles.listOnStart см. в разделе "Уведомление о файле".
Как очистить ресурсы уведомлений о событиях, созданные Автозагрузчиком?
Вы можете использовать облачный диспетчер ресурсов для управления и удаления ресурсов. Эти ресурсы также можно удалить вручную с помощью пользовательского интерфейса или API поставщика облачных служб.
Как отслеживать мой конвейер Auto Loader?
Auto Loader предоставляет ключевые метрики через StreamingQueryListener, а состояние загрузки данных на уровне файла — через cloud_files_state(). Рекомендации по мониторингу метрик, запросу состояния приема данных, созданию панелей наблюдаемости и устранению распространенных проблем см. в статье Мониторинг и наблюдение за Auto Loader.