Modo desencadenado frente a canalización continua
En este artículo se describe la semántica operativa de los modos de canalización desencadenados y continuos para Delta Live Tables.
El modo de canalización es independiente del tipo de tabla que se está calculando. Tanto las vistas materializadas como las tablas de streaming se pueden actualizar en cualquier modo de canalización.
Para cambiar entre desencadenado y continuo, use la opción Modo de canalización en la configuración de canalización al crear o editar una canalización. Consulte Configuración de una canalización de Delta Live Tables.
Nota:
Las operaciones de actualización para vistas materializadas y tablas de streaming definidas en Databricks SQL siempre se ejecutan mediante el modo de canalización desencadenado.
¿Qué es el modo de canalización desencadenado?
Si la canalización usa el modo desencadenado , el sistema detiene el procesamiento después de actualizar correctamente todas las tablas o tablas seleccionadas, lo que garantiza que cada tabla de la actualización se actualice en función de los datos disponibles cuando se inicie la actualización.
¿Qué es el modo de canalización continua?
Si la canalización usa la ejecución continua, Delta Live Tables procesa nuevos datos a medida que llega a los orígenes de datos para mantener las tablas en toda la canalización actualizadas.
Para evitar el procesamiento innecesario en modo de ejecución continua, las canalizaciones supervisan automáticamente las tablas Delta dependientes y realizan una actualización solo cuando el contenido de esas tablas dependientes ha cambiado.
Elección de los modos de canalización de datos
En la tabla siguiente se resaltan las diferencias entre los modos de canalización desencadenados y continuos:
Preguntas clave | Desencadenado | Continuo |
---|---|---|
¿Cuándo se detiene la actualización? | Automáticamente una vez completada. | Se ejecuta continuamente hasta que se detiene manualmente. |
¿Qué datos se procesan? | Datos disponibles cuando se inicia la actualización. | Todos los datos a medida que llegan a los orígenes configurados. |
¿Para qué requisitos de actualización de datos es mejor? | Las actualizaciones de datos se ejecutan cada 10 minutos, cada hora o diariamente. | Las actualizaciones de datos se desean entre cada 10 segundos y unos minutos. |
Las canalizaciones desencadenadas pueden reducir el consumo y el gasto de recursos, ya que el clúster solo se ejecuta lo suficientemente largo como para actualizar la canalización. Sin embargo, los nuevos datos no se procesarán hasta que se desencadene la canalización. Las canalizaciones continuas requieren un clúster en constante ejecución, que es más costoso, pero reduce la latencia de procesamiento.
Establecimiento del intervalo de desencadenador para canalizaciones continuas
Al configurar canalizaciones para el modo continuo, puede establecer intervalos de desencadenador para controlar la frecuencia con la que la canalización inicia una actualización para cada flujo.
Puede usar pipelines.trigger.interval
para controlar el intervalo del desencadenador de un flujo que actualiza una tabla o una canalización completa. Dado que una canalización desencadenada procesa cada tabla una vez, solo pipelines.trigger.interval
se usa con canalizaciones continuas.
Databricks recomienda establecer pipelines.trigger.interval
en tablas individuales porque las consultas por lotes y streaming tienen valores predeterminados diferentes. Establezca el valor en una canalización solo cuando el procesamiento requiera controlar las actualizaciones de todo el gráfico de canalización.
Se establece pipelines.trigger.interval
en una tabla mediante spark_conf
en Python o SET
en 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 ...
Para establecer el elemento pipelines.trigger.interval
en una canalización, agréguelo al objeto configuration
en la configuración de la canalización:
{
"configuration": {
"pipelines.trigger.interval": "10 seconds"
}
}