Pipelines

Dans les SDK Dataflow, un pipeline représente une tâche de traitement de données. Vous concevez un pipeline en écrivant un programme à l'aide d'un SDK Dataflow. Les données et les transformations intervenant dans un pipeline sont propres à ce pipeline et lui appartiennent. Bien que votre programme puisse créer plusieurs pipelines, ceux-ci ne peuvent pas partager de données ni de transformations.

Vous pouvez créer des pipelines plus ou moins complexes. Un pipeline peut être relativement simple et linéaire, avec un ensemble de transformations exécutées l'une à la suite de l'autre, mais il peut aussi comporter des embranchements et des fusions. En ce cas, le pipeline se présente comme un graphe d'étapes dirigé plutôt que comme une simple séquence d'étapes linéaire. Lorsque vous construisez un pipeline, vous pouvez créer ce graphique dirigé en utilisant des conditions, des boucles et d'autres structures de programmation courantes.

Remarque : Lorsque vous écrivez un programme à l'aide d'un SDK Dataflow, ce programme crée une spécification de pipeline. Cette spécification est envoyée à un exécuteur de pipeline, qui peut être le service Cloud Dataflow ou un programme d'exécution tiers. Le gestionnaire de pipeline exécute le pipeline proprement dit de manière asynchrone. Un pipeline peut également être exécuté en local à des fins de test et de débogage.

Lorsque le gestionnaire de pipeline crée votre pipeline réel en vue de son exécution distribuée, ce pipeline peut être optimisé. Par exemple, il peut s'avérer plus économique en termes de calculs d'exécuter certaines transformations ensemble ou dans un ordre différent. Le service Dataflow gère entièrement cet aspect de l'exécution de votre pipeline.

Composantes d'un pipeline

Un pipeline se compose de deux parties : les données et les transformations appliquées à ces données. Les SDK Dataflow fournissent des classes permettant de représenter aussi bien les données que les transformations. Les SDK Dataflow relient les classes de données aux classes de transformation pour construire le pipeline complet. Consultez la page Construire votre pipeline pour savoir comment utiliser les classes des SDK Dataflow afin de construire votre pipeline de bout en bout.

Données du pipeline

Dans les SDK Dataflow, les pipelines utilisent une classe de collection spécialisée appelée PCollection pour représenter leurs données d'entrée, intermédiaires et de sortie. Les collections PCollection permettent de représenter des ensembles de données de toute taille. Notez que, par rapport aux classes de collection classiques telles que la classe Collection de Java, les objets PCollection sont spécifiquement conçus pour prendre en charge le traitement en parallèle.

Un pipeline doit créer une collection PCollection pour toutes les données qu'il est appelé à traiter. Vous avez la possibilité de placer des données lues à partir d'une source externe dans une collection PCollection, ou de créer une collection PCollection à partir de données locales se trouvant dans votre programme Dataflow. Ensuite, chacune des transformations de votre pipeline accepte une ou plusieurs collections PCollection en entrée et produit une ou plusieurs collections PCollection en sortie.

Pour une description complète du fonctionnement et de l'utilisation d'une collection PCollection, consultez la page PCollection.

Transformations du pipeline

Une transformation est une étape définie dans votre pipeline. Chaque transformation accepte une ou plusieurs collections PCollection en entrée, modifie ou manipule d'une façon ou d'une autre les éléments de cette collection PCollection, et génère une ou plusieurs nouvelles collections PCollection en sortie.

Transformations de base

Les SDK Dataflow contiennent un certain nombre de transformations de base. Une transformation de base est une opération générique qui représente une opération de traitement élémentaire ou courante que vous effectuez sur vos données de pipeline. La plupart des transformations de base proposent un modèle de traitement et vous obligent à créer et à fournir la logique de traitement réelle à appliquer à la collection PCollection d'entrée.

Par exemple, la transformation de base ParDo fournit le schéma de traitement générique suivant : pour chaque élément de la collection PCollection d'entrée, exécuter une fonction de traitement spécifiée par l'utilisateur sur cet élément. Les SDK Dataflow fournissent des transformations de base telles que ParDo et GroupByKey, ainsi que d'autres transformations de base pour la combinaison, la fusion et le fractionnement d'ensembles de données.

Pour une description complète de l'utilisation des transformations dans votre pipeline, consultez la page Transformations.

Transformations composites

Les SDK Dataflow permettent de combiner plusieurs transformations en une transformation composite de plus grande taille. Dans une transformation composite, plusieurs transformations sont appliquées à un ensemble de données de façon à effectuer une opération de traitement de données plus complexe. Les transformations composites sont un bon moyen de créer des combinaisons de transformations modulaires qui peuvent être réutilisées si nécessaire.

Les SDK Dataflow contiennent des bibliothèques de transformations composites pré-écrites qui couvrent en particulier ces cas d'utilisation courants du traitement de données :

  • Combinaisons de données, telles que la somme ou la moyenne de données numériques
  • Traitements de type mappage/brassage/réduction, tels que le comptage des éléments uniques d'une collection
  • Analyse statistique, telle que la recherche des N premiers éléments d'une collection

Vous pouvez également créer vos propres transformations composites réutilisables. Pour une description complète, consultez la page Créer des transformations composites.

Transformations racines

Les SDK Dataflow ont fréquemment recours à des transformations racines en début de pipeline afin de créer une collection PCollection initiale. Les transformations racines consistent souvent à lire des données depuis une source de données externe. Pour plus d'informations, consultez la page E/S de pipeline.

Exemple simple de pipeline

L'exemple qui suit illustre la construction et l'exécution d'un pipeline comportant trois transformations : une pour lire les données d'entrée, une pour compter ces données et une pour écrire les résultats de ce comptage.

Remarque : Pour une analyse détaillée de la construction d'un pipeline à l'aide des classes de SDK Dataflow, consultez la page Construire votre pipeline.

Un mode de construction courant consiste à "enchaîner" les transformations du pipeline. Pour ce faire, il suffit d'appliquer chaque nouvelle transformation directement à la collection PCollection résultant de la transformation précédente, comme illustré dans l'exemple suivant.

Java

  public static void main(String[] args) {
    // Create a pipeline parameterized by commandline flags.
    Pipeline p = Pipeline.create(PipelineOptionsFactory.fromArgs(args));

    p.apply(TextIO.Read.from("gs://..."))   // Read input.
     .apply(new CountWords())               // Do some processing.
     .apply(TextIO.Write.to("gs://..."));   // Write output.

    // Run the pipeline.
    p.run();
  }

Dans cet exemple, le premier appel de la méthode apply appelle une transformation racine pour créer une collection PCollection (dans le cas présent, en lisant les données d'un fichier). L'appel suivant de la méthode apply s'applique à la collection PCollection résultante, et ainsi de suite.

Remarque : La valeur de retour n'est pas enregistrée pour tous les éléments de la chaîne. En effet, le dernier appel à la méthode apply, qui appelle la transformation Write, renvoie une valeur triviale du type PDone au lieu d'une collection PCollection. La valeur PDone est généralement ignorée.

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

Envoyer des commentaires concernant…

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