Настройка интервалов триггера структурированной потоковой передачи
Структурированная потоковая передача Apache Spark инкрементно обрабатывает данные. Управление интервалом триггера для пакетной обработки позволяет использовать структурированную потоковую передачу для рабочих нагрузок, в том числе с обработкой в реальном времени, обновлением баз данных каждые 5 минут или раз в час, а также с пакетной обработкой всех новых данных в течение дня или недели.
Так как автозагрузчик Databricks использует структурированную потоковую передачу для загрузки данных, понимание принципов работы триггеров позволяет вам более гибко управлять затратами при приеме данных с требуемой частотой.
Указание интервалов триггеров на основе времени
В структурированной потоковой передаче интервалы триггера на основе времени называются "микропакетами с фиксированным интервалом". С помощью ключевого слова processingTime
укажите длительность в виде строки, например .trigger(processingTime='10 seconds')
.
Если указать слишком маленький интервал trigger
(меньше десятой секунды), система может выполнять ненужные проверки на наличие новых поступлений данных. Настройте время обработки, чтобы сбалансировать требования к задержке и скорость поступления данных в источник.
Настройка добавочной пакетной обработки
Внимание
В Databricks Runtime 11.3 LTS и более поздних Trigger.Once
версиях параметр не рекомендуется. Databricks рекомендует использовать Trigger.AvailableNow
для всех добавочных рабочих нагрузок пакетной обработки.
Доступный теперь параметр триггера использует все доступные записи в качестве добавочного пакета с возможностью настройки размера пакета с такими параметрами, как maxBytesPerTrigger
(параметры размера зависят от источника данных).
Azure Databricks поддерживает добавочную Trigger.AvailableNow
пакетную обработку из многих структурированных источников потоковой передачи. В следующей таблице приведена минимальная поддерживаемая версия Databricks Runtime, необходимая для каждого источника данных:
Исходный код | Минимальная версия среды выполнения Databricks |
---|---|
Источники файлов (JSON, Parquet и т. д.) | 9.1 LTS |
Delta Lake | 10.4 LTS |
Автозагрузчик | 10.4 LTS |
Apache Kafka | 10.4 LTS |
Kinesis | Версия 13.1 |
Каков интервал триггера по умолчанию?
Структурированная потоковая передача по умолчанию использует микропакеты с фиксированным интервалов в 500 мс. Databricks рекомендует всегда указывать адаптированный параметр trigger
, чтобы свести к минимуму затраты, связанные с проверкой поступления новых данных и обработки пакетов малого размера.
Изменение интервалов триггеров между запусками
Интервал триггера можно изменить при использовании одной контрольной точки.
Если задание структурированной потоковой передачи останавливается во время обработки микропакета, то микропакет должен завершиться до применения нового интервала триггера. Таким образом, после изменения интервала триггера можно наблюдать микропакетную обработку с указанными ранее параметрами.
При переходе с интервала на основе времени на использование AvailableNow
это может привести к обработке микро пакетной обработки перед обработкой всех доступных записей в виде добавочного пакета.
При переходе с AvailableNow
интервала на основе времени это может привести к продолжению обработки всех записей, доступных при запуске последнего AvailableNow
задания. Это ожидаемое поведение.
Примечание.
Если вы пытаетесь восстановиться после сбоя запроса, связанного с добавочным пакетом, изменение интервала триггера не решает эту проблему, так как пакет по-прежнему должен быть завершен. Databricks рекомендует увеличить объем вычислительных ресурсов, используемых для обработки пакета, чтобы попытаться устранить проблему. В редких случаях может потребоваться перезапустить поток с помощью новой контрольной точки.
Что такое режим непрерывной обработки?
Apache Spark поддерживает дополнительный интервал триггера, называемый непрерывной обработкой. Этот режим классифицируется как экспериментальный с версии Spark 2.3; Обратитесь к группе учетной записи Azure Databricks, чтобы убедиться, что вы понимаете компромиссы этой модели обработки.
Обратите внимание, что этот режим непрерывной обработки вообще не связан с непрерывной обработкой, применяемой в разностных динамических таблицах.