Активируемый против непрерывного режима конвейера
В этой статье описывается операционная семантика триггерных и непрерывных режимов конвейера для DLT.
Конвейерный режим независим от типа вычисляемой таблицы. Материализованные представления и таблицы потоковой передачи можно обновлять в любом режиме конвейера.
Чтобы переключиться между триггерным и непрерывным режимами, используйте параметр в настройках конвейера при создании или редактировании конвейера. См. Настройте конвейер DLT.
Заметка
Операции обновления для материализованных представлений и потоковых таблиц, определенных в Databricks SQL, всегда выполняются с помощью режима инициированного конвейера.
Что такое режим запущенного конвейера?
Если конвейер использует режим с триггером , система останавливает обработку после успешного обновления всех таблиц или выбранных таблиц, обеспечивая обновление каждой таблицы на основе данных, доступных при запуске обновления.
Что такое режим непрерывного конвейера?
Если конвейер использует непрерывное выполнение, DLT обрабатывает новые данные по мере их поступления в источники данных, чтобы обеспечить таблицы во всем конвейере свежими.
Чтобы избежать ненужной обработки в непрерывном режиме выполнения, конвейеры автоматически отслеживают зависимые таблицы Delta и выполняют обновление только при изменении содержимого этих зависимых таблиц.
Выбор режимов конвейера данных
В следующей таблице перечислены различия между триггерами и режимами непрерывного конвейера:
Ключевые вопросы | Активировано | Непрерывный |
---|---|---|
Когда обновление останавливается? | Автоматически после завершения. | Выполняется непрерывно до тех пор, пока не будет остановлено вручную. |
Какие данные обрабатываются? | Данные, доступные при запуске обновления. | Все данные по мере поступления в настроенные источники. |
Каким требованиям к свежести данных это соответствует лучше всего? | Обновления данных выполняются каждые 10 минут, почасовой или ежедневно. | Обновления данных нужны каждые 10 секунд до нескольких минут. |
Инициируемые конвейеры могут снизить потребление ресурсов и расходы, так как кластер работает ровно столько времени, сколько необходимо для обновления конвейера. Однако новые данные не будут обрабатываться до активации конвейера. Непрерывные конвейеры требуют постоянно работающего кластера, что является более дорогостоящим, но снижает задержку обработки.
Задать интервал триггера для непрерывных конвейеров
При настройке конвейеров для непрерывного режима можно задать интервалы триггеров, чтобы контролировать частоту запуска конвейера обновления для каждого потока.
Можно использовать pipelines.trigger.interval
для управления интервалом срабатывания триггера при обновлении таблицы или всего конвейера. Так как активированный конвейер обрабатывает каждую таблицу один раз, pipelines.trigger.interval
используется только с непрерывными конвейерами.
Databricks рекомендует задать pipelines.trigger.interval
для отдельных таблиц, так как потоковая передача и пакетные запросы имеют разные значения по умолчанию. Установите значение в конвейере только когда обработка требует контроля обновлений для всей схемы конвейера.
Вы устанавливаете pipelines.trigger.interval
в таблице с помощью spark_conf
в Python или SET
в SQL:
@dlt.table(
spark_conf={"pipelines.trigger.interval" : "10 seconds"}
)
def <function-name>():
return (<query>)
SET pipelines.trigger.interval=10 seconds;
CREATE OR REFRESH MATERIALIZED VIEW TABLE_NAME
AS SELECT ...
Чтобы задать pipelines.trigger.interval
в конвейере, добавьте его в объект configuration
в параметрах конвейера:
{
"configuration": {
"pipelines.trigger.interval": "10 seconds"
}
}