Pipelines en streaming

Les PCollections illimitées, ou collections illimitées, représentent des données dans des pipelines de traitement par flux. Une collection illimitée contient des données issues d'une source de données actualisée en continu, telle que Pub/Sub.

Vous ne pouvez pas utiliser une clé pour regrouper des éléments dans une collection illimitée. Il peut y avoir une infinité d'éléments pour une clé donnée dans les flux de données, car la source de données ajoute constamment de nouveaux éléments. Vous pouvez exploiter des fenêtres, des filigranes et des déclencheurs pour regrouper des éléments dans des collections illimitées.

Fonctions des fenêtres et du fenêtrage

Les fonctions de fenêtrage permettent de diviser les collections illimitées en composants logiques ou fenêtres. Elles regroupent les collections illimitées selon l'horodatage des éléments individuels. Chaque fenêtre contient un nombre fixe d'éléments.

Vous définissez les fenêtres suivantes avec le SDK Apache Beam ou les extensions de traitement par flux Dataflow SQL :

Tumbling windows

Une fenêtre bascule représente un intervalle de temps cohérent et disjoint dans le flux de données.

Par exemple, si vous définissez une fenêtre bascule de 30 secondes, les éléments avec des valeurs d'horodatage [0:00:00-0:00:30) sont dans la première fenêtre. Les éléments associés à des valeurs d'horodatage [0:00:30-0:01:00) se trouvent dans la deuxième fenêtre.

L'image suivante illustre la division des éléments dans des fenêtres bascules de 30 secondes.

Image montrant des fenêtres bascules d'une durée de 30 secondes

Hopping windows

Une fenêtre récurrente représente un intervalle de temps cohérent dans le flux de données. Les fenêtres récurrentes peuvent se chevaucher, tandis que les fenêtres bascules sont disjointes.

Par exemple, une fenêtre récurrente peut démarrer toutes les dix secondes et capturer une minute de données et la fenêtre. La fréquence à laquelle les fenêtres récurrentes démarrent s'appelle la période. Cet exemple présente une fenêtre d'une minute avec une période de 10 secondes.

L'image suivante montre comment les éléments sont divisés en fenêtres récurrentes d'une minute avec une période de 10 secondes.

Image montrant des fenêtres récurrentes d'une durée d'une minute et d'une période de 30 secondes

Pour utiliser des moyennes de données, utilisez des fenêtres récurrentes. Vous pouvez utiliser des fenêtres récurrentes d'une minute avec des périodes de 10 secondes pour calculer une moyenne de 10 secondes toutes les minutes.

Fenêtres de session

Une fenêtre de session contient des éléments dans une durée d'intervalle d'un autre élément. La durée d'intervalle correspond à un intervalle entre les nouvelles données d'un flux de données. Si les données arrivent après la durée d'intervalle, elles sont attribuées à une nouvelle fenêtre.

Par exemple, les fenêtres de session peuvent diviser un flux de données représentant l'activité de la souris de l'utilisateur. Ce flux de données peut comporter de longues périodes d'inactivité entrecoupées de nombreux clics. Une fenêtre de session peut contenir les données générées par les clics.

Le fenêtrage de session attribue des fenêtres différentes à chaque clé de données. Les fenêtres bascules et récurrentes contiennent tous les éléments dans l'intervalle spécifié, quelles que soient les clés de données.

L'image suivante montre comment les éléments sont divisés en fenêtres de session.

Image montrant des fenêtres de session avec durée d'intervalle minimale

Filigranes

Un filigrane est un seuil qui indique à quel moment Dataflow attend l'arrivée de toutes les données d'une fenêtre. Si de nouvelles données arrivent avec un horodatage qui est dans la fenêtre, mais qui est plus ancien que le filigrane, les données sont considérées comme étant en retard.

Dataflow suit les filigranes pour les raisons suivantes :

  • Il n'est pas certain que les données arrivent dans l'ordre chronologique ou à des intervalles prévisibles.
  • Il n'est pas certain que les événements de données apparaissent dans les pipelines dans le même ordre que celui où ils ont été générés.

La source de données détermine le filigrane. Vous pouvez autoriser les données en retard avec le SDK Apache Beam. Dataflow SQL ne traite pas les données en retard.

Déclencheurs

Les déclencheurs déterminent à quel moment émettre les résultats agrégés à l'arrivée des données. Par défaut, les résultats sont émis lorsque le filigrane dépasse la fin de la fenêtre.

Vous pouvez utiliser le SDK Apache Beam pour créer ou modifier des déclencheurs pour chaque collection dans un pipeline de traitement par flux. Vous ne pouvez pas définir de déclencheurs avec Dataflow SQL.

Le SDK Apache Beam peut définir des déclencheurs qui fonctionnent sur n'importe quelle combinaison des conditions suivantes :

  • Heure de l'événement, comme indiqué par l'horodatage de chaque élément de données.
  • Heure de traitement, soit l'heure à laquelle l'élément de données est traité à une étape donnée du pipeline.
  • Nombre d'éléments de données dans une collection.