Compartir a través de


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 las canalizaciones declarativas de Lakeflow.

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, utilice 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 canalizaciones declarativas de Lakeflow.

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 activada?

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, Lakeflow Declarative Pipelines procesa nuevos datos a medida que llegan a los orígenes de datos para mantener las tablas a lo largo de 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 completado. 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 durante el tiempo necesario 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 siempre en ejecución, que es más caro, pero reduce la latencia de procesamiento.

Configurar 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 de activación 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 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"
  }
}