Partager via


Mode de pipeline continu et déclenché

Cet article décrit la sémantique opérationnelle des modes de pipeline déclenchés et continus pour les tables dynamiques Delta.

Le mode pipeline est indépendant du type de table en cours de calcul. Les vues matérialisées et les tables de streaming peuvent être mises à jour en mode pipeline.

Pour changer entre déclencheur et continu, utilisez l’option mode pipeline dans les paramètres du pipeline lors de la création ou de la modification d’un pipeline. Consultez Configurer un pipeline Delta Live Tables.

Remarque

Les opérations d’actualisation pour les vues matérialisées et les tables de streaming définies dans Databricks SQL s’exécutent toujours à l’aide du mode de pipeline déclenché.

Qu’est-ce que le mode de pipeline déclenché ?

Si le pipeline utilise le mode déclenché , le système arrête le traitement après avoir correctement actualisé toutes les tables ou tables sélectionnées, ce qui garantit que chaque table de la mise à jour est actualisée en fonction des données disponibles au démarrage de la mise à jour.

Qu’est-ce que le mode pipeline continu ?

Si le pipeline utilise l’exécution continue, Delta Live Tables traite les nouvelles données lorsqu’elles arrivent dans des sources de données pour conserver les tables tout au long du pipeline.

Pour éviter tout traitement inutile en mode d’exécution continue, les pipelines surveillent automatiquement les tables Delta dépendantes et effectuent une mise à jour uniquement lorsque le contenu de ces tables dépendantes a changé.

Choisir un mode de pipeline de données

Le tableau suivant met en évidence les différences entre les modes de pipeline déclenchés et continus :

Questions clés Déclenchée Continue
Quand la mise à jour s’arrête-t-elle ? Une fois terminé automatiquement. S’exécute en continu jusqu’à ce qu’il soit arrêté manuellement.
Quelles données sont traitées ? Données disponibles au démarrage de la mise à jour. Toutes les données à mesure qu’elles arrivent à des sources configurées.
Quelles sont les exigences de fraîcheur des données qui conviennent le mieux ? Les mises à jour de données s’exécutent toutes les 10 minutes, toutes les heures ou tous les jours. Les mises à jour des données sont souhaitées entre 10 secondes et quelques minutes.

Les pipelines déclenchés peuvent réduire la consommation et les dépenses des ressources, car le cluster ne s’exécute que suffisamment longtemps pour mettre à jour le pipeline. Toutefois, les nouvelles données ne seront pas traitées tant que le pipeline ne sera pas déclenché. Les pipelines continus nécessitent un cluster fonctionnant en permanence, ce qui est plus onéreux, mais réduit la latence de traitement.

Définir l’intervalle de déclencheur pour les pipelines continus

Lors de la configuration des pipelines pour le mode continu, vous pouvez définir des intervalles de déclencheur pour contrôler la fréquence à laquelle le pipeline démarre une mise à jour pour chaque flux.

Vous pouvez utiliser pipelines.trigger.interval pour contrôler l’intervalle de déclenchement d’un flux mettant à jour une table ou un pipeline entier. Étant donné qu’un pipeline déclenché traite chaque table une seule fois, il pipelines.trigger.interval est utilisé uniquement avec des pipelines continus.

Databricks recommande de définir pipelines.trigger.interval des tables individuelles, car les requêtes de streaming et de traitement par lots ont des valeurs par défaut différentes. Définissez la valeur sur un pipeline uniquement lorsque le traitement nécessite le contrôle des mises à jour pour l’ensemble du graphique de pipeline.

Vous définissez pipelines.trigger.interval sur une table à l’aide spark_conf de Python ou SET dans 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 ...

Pour définir pipelines.trigger.interval sur un pipeline, ajoutez-le à l’objet configuration dans les paramètres du pipeline :

{
  "configuration": {
    "pipelines.trigger.interval": "10 seconds"
  }
}