Exemples complets

Un certain nombre d'exemples de pipelines sont disponibles dans le répertoire Exemples complets (branche master-1.x) sur GitHub. Ces pipelines illustrent des schémas classiques de pipeline de bout en bout à l'aide d'exemples de scénarios. Chaque exemple de scénario est inspiré d'un domaine réel du traitement de données, par exemple l'analyse de données de trafic routier, de hashtags Twitter ou de données d'édition dans Wikipédia. Ce document décrit brièvement chaque exemple et fournit un lien vers le code source.

La Présentation pas-à-pas de l'exemple WordCount constitue un bon point de départ pour les nouveaux utilisateurs. Celui-ci passe en revue les fichiers texte fournis en entrée et calcule le nombre d'occurrences de chaque mot dans ces fichiers. WordCount enseigne les concepts clés de Dataflow à travers un exemple très simple. Les pipelines ci-dessous sont toutefois plus réalistes.

Mots clés importants

Les termes suivants apparaîtront tout au long de ce document :

  • Pipeline : un pipeline est le code à écrire pour représenter une tâche de traitement des données. Dataflow prend le code du pipeline et l'utilise pour créer une tâche.
  • PCollection : une PCollection est une classe spéciale fournie par le SDK Dataflow qui représente un ensemble de données typé.
  • Transformation : dans un pipeline Dataflow, une transformation représente une étape ou une opération de traitement qui transforme des données.
  • PCollections limitées et illimitées : la taille d'une PCollection peut être limitée ou non. Votre PCollection est limitée si elle représente un ensemble de données fixe ou illimitée si elle représente un ensemble de données continuellement mis à jour.
  • Mode lots : si un pipeline "s'exécute en mode lots", son entrée est limitée.
  • Mode flux : si un pipeline "s'exécute en mode flux", son entrée est illimitée.
  • Fenêtrage : le fenêtrage est un concept utilisé dans le SDK Dataflow pour subdiviser une PCollection suivant l'horodatage de ses éléments individuels.

Saisie semi-automatique

Java

Le pipeline AutoComplete calcule les hashtags les plus courants pour chaque préfixe d'un mot de l'entrée. Vous pouvez utiliser les résultats du pipeline AutoComplete pour la saisie semi-automatique. AutoComplete reçoit des mots en entrée et calcule les suggestions les plus courantes pour chaque préfixe de chaque mot de l'entrée.

AutoComplete peut être exécuté sur des données limitées (en mode lots) ou illimitées (en mode flux). Lorsque vous utilisez des données limitées, l'entrée est une liste de mots figurant dans un fichier texte. En mode flux, les mots alimentent constamment l'entrée depuis un sujet Google Cloud Pub/Sub.

Le pipeline AutoComplete applique une série de transformations aux chaînes d'entrée pour extraire les mots précédés de hashtags, détermine les préfixes de ces mots et calcule les meilleures suggestions pour chaque préfixe. La sortie du pipeline est constituée des meilleures suggestions.

Extraction de mots en flux continu

Java

Le pipeline StreamingWordExtract est un petit exemple de pipeline qui montre comment utiliser des données en flux continu. Le pipeline lit des lignes de texte en flux continu depuis Cloud Pub/Sub, découpe chaque ligne en mots individuels, puis passe les mots en majuscules. Ensuite, le pipeline met en forme les mots en majuscules en tant que lignes de table BigQuery et effectue une écriture en flux continu dans une table BigQuery.

TfIdf

Java

TfIdf, qui signifie term frequency – inverse document frequency (fréquence du terme – fréquence inverse des documents), calcule l'importance d'un mot dans un document ou un ensemble de documents.

Le pipeline Tf-idf lit un ensemble de documents depuis un répertoire ou Google Cloud Storage, puis applique une série de transformations permettant de calculer les composants du classement tf-idf de chaque mot. L'un des composants du calcul tf-idf est la partie idf (fréquence inverse des documents), qui correspond au nombre de documents dans lequel le mot apparaît, divisé par le nombre total de documents. Le nombre total de documents est injecté dans le pipeline en tant qu'entrée secondaire, car il s'agit d'une valeur qui ne change pas. Une entrée secondaire est une entrée supplémentaire à laquelle le pipeline peut accéder chaque fois qu'il traite un élément de la PCollection d'entrée.

Tf-idf renvoie un mappage entre chaque mot et son classement dans le document où il apparaît.

Les meilleures sessions de Wikipédia

Java

TopWikipediaSessions est un pipeline de traitement par lots qui analyse les données de modification Wikipédia lues depuis Google Cloud Storage. Il identifie l'utilisateur ayant la plus grande série de modifications dans Wikipédia au cours d'une seule session. Une session est définie comme une série de modifications, chacune étant séparée de la suivante par moins d'une heure.

Par exemple, supposons que l'utilisateur A modifie Wikipédia cinq fois, chaque modification étant séparée de la suivante de 30 minutes. Le lendemain, l'utilisateur A modifie à nouveau Wikipédia. Sa session la plus longue consiste en cinq modifications (et non six). L'utilisateur B modifie Wikipédia 20 fois, mais toutes les 2 heures. Sa session la plus longue consiste donc en une modification. Par conséquent, l'utilisateur A est celui qui possède la plus grande série de modifications au cours d'une session.

Cet exemple utilise le fenêtrage pour effectuer des agrégations de données basées sur le temps. Il utilise des fenêtres d'une durée d'une heure pour définir les sessions et calcule le nombre de modifications de chaque session utilisateur.

Le pipeline écrit sa sortie sous forme de chaînes de caractères mises en forme dans un fichier texte stocké dans Google Cloud Storage.

Débit de trafic maximal par voie

Java

Le pipeline TrafficMaxLaneFlow analyse les données provenant de capteurs de trafic. Ce pipeline peut fonctionner en mode lots et en mode flux. En mode lots, le pipeline lit les données du capteur de trafic dans un fichier d'entrée. En mode flux, les données arrivent en flot constant depuis un sujet Google Cloud Pub/Sub.

TrafficMaxLaneFlow analyse le flux de données entrant à l'aide du fenêtrage, plus spécifiquement au moyen de fenêtres à durée flexible. Ces dernières utilisent des intervalles de temps dans le flux de données pour définir des groupes de données dont les fenêtres se chevauchent.

TrafficMaxLaneFlow utilise une transformation Combine personnalisée pour extraire les informations relatives à une voie et calculer le débit maximal par voie pour une station donnée, pour chaque fenêtre. Il est nécessaire ici d'utiliser une transformation Combine personnalisée, car une simple combinaison Max ne suffit pas. Elle doit conserver des informations supplémentaires en plus de la valeur de flux.

Le pipeline met en forme et écrit les valeurs maximales ainsi que les informations auxiliaires dans une table BigQuery.

Voies de circulation

Java

TrafficRoutes analyse les données provenant de capteurs de trafic, calcule la vitesse moyenne sur un sous-ensemble restreint de "routes" prédéfinies et recherche des "ralentissements" sur ces voies.

Le pipeline TrafficRoutes fonctionne sur des données limitées (en mode lots) ou des données illimitées (en mode flux). En mode lots, le pipeline lit les données des capteurs de trafic à partir d'un fichier texte. En mode flux, le pipeline lit les données dans un sujet Cloud Pub/Sub.

Le pipeline analyse le flux de données entrant à l'aide du fenêtrage, plus spécifiquement au moyen de fenêtres à durée flexible. Ces dernières utilisent des intervalles de temps dans le flux de données pour définir des groupes de données dont les fenêtres se chevauchent. La durée par défaut d'une fenêtre dans TrafficRoutes est de trois minutes et l'intervalle de chevauchement par défaut est d'une minute. Par conséquent, chaque fenêtre contient un échantillon de données de trois minutes, qui commence une minute après le début de la fenêtre précédente. Pour chaque fenêtre, le pipeline calcule la vitesse moyenne sur l'ensemble des "routes" prédéfinies et recherche des "ralentissements". Un "ralentissement" se produit si une majorité qualifiée des vitesses dans une fenêtre à durée flexible est inférieure à la valeur observée pour la fenêtre précédente.

Ensuite, le pipeline met en forme les résultats et les écrit dans BigQuery.

Estimation PI

Java

Cet exemple de pipeline n'est pas disponible dans le SDK Dataflow pour Java.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.