Partager via


Mode de pipeline continu et déclenché

Cet article décrit la sémantique opérationnelle des modes déclenchés et continus pour les pipelines.

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 des pipelines.

Note

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, les pipelines déclaratifs Spark Lakeflow traitent de nouvelles données à mesure qu’elles arrivent dans des sources de données pour conserver les tables tout au long du pipeline fraîches.

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é Continu
Quand la mise à jour s’arrête-t-elle ? Automatiquement une fois terminé. 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.
Pour quels critères de fraîcheur des données est-ce le mieux adapté ? 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 de ressources et les coûts, car le cluster ne fonctionne que le temps nécessaire pour mettre à jour le pipeline. Toutefois, les nouvelles données ne seront pas traitées tant que le pipeline n’est pas déclenché. Les pipelines continus nécessitent un cluster toujours en cours d’exécution, ce qui est plus coûteux, 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éclencheur d’un flux mettant à jour une table ou un pipeline entier. Étant donné qu’un pipeline déclenché traite chaque table une seule fois, pipelines.trigger.interval est utilisé uniquement avec des pipelines continus.

Databricks recommande de définir pipelines.trigger.interval sur des tables individuelles, car les requêtes de streaming et de traitement par lots ont par défaut des valeurs 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 :

@dp.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"
  }
}