E/S de pipeline

Pour créer un pipeline, vous aurez généralement besoin de lire des données provenant d'une source externe, par exemple un fichier stocké dans Google Cloud Storage ou une table BigQuery. De même, vous souhaiterez que votre pipeline transmette les données de résultat à un récepteur de données externe analogue, comme des fichiers de sortie dans Cloud Storage ou BigQuery. Les SDK Dataflow fournissent des transformations capables de lire les données d'une source externe ou d'écrire des données sur un récepteur externe.

Les SDK Dataflow fournissent des transformations Read et Write compatibles avec plusieurs types de stockage de données courants. De plus, les API Read et Write sont extensibles : si vous souhaitez que votre pipeline lise ou écrive dans un format de stockage de données non compatible avec les transformations intégrées, vous pouvez créer les extensions requises pour fournir vos propres opérations Read et Write.

Lire des données d'entrée

Les transformations Read lisent des données provenant d'une source externe et renvoient une représentation de ces données sous la forme d'une collection PCollection utilisable par votre pipeline. Bien que vous puissiez utiliser une transformation Read à tout moment durant la construction de votre pipeline pour créer une collection PCollection, cette transformation interviendra généralement au lancement de votre programme.

Java

Remarque : Comme les transformations Read ne possèdent pas de collection PCollection d'entrée, elles sont directement appliquées au Pipeline. Comme à l'accoutumée, l'appel de la méthode apply renvoie une collection PCollection du type approprié, dont les éléments représentent les données. Pour plus d'informations, consultez la page Construire votre pipeline.

Lire des données depuis plusieurs emplacements

De nombreuses transformations Read, telles que Text, acceptent la lecture de plusieurs fichiers d'entrée correspondant à un opérateur global que vous spécifiez. Prenons par exemple l'utilisation suivante de la transformation Read, qui fait appel à un opérateur global (*) pour lire tous les fichiers d'entrée correspondants situés à l'emplacement indiqué dans Google Cloud Storage :

Java

  p.apply(TextIO.Read.named("ReadFromText")
		     .from("gs://my_bucket/path/to/input-*.csv");

La transformation Read ci-dessus lira tous les fichiers situés à l'emplacement Cloud Storage indiqué et dont le nom comporte le préfixe "input-" et le suffixe ".csv".

Pour lire des données provenant de plusieurs sources et les regrouper dans une même collection PCollection, lisez indépendamment les données de chaque source, puis utilisez la transformation Flatten pour créer une seule collection PCollection.

Écrire des données de sortie

Les transformations Write permettent d'écrire les données d'une collection PCollection sur une source de données externe. Les transformations Write interviennent le plus souvent à la fin de votre programme pour générer les résultats finaux du pipeline. Vous pouvez cependant utiliser une transformation Write pour générer une sortie des données d'une collection PCollection à n'importe quel point de votre pipeline.

Pour utiliser une transformation Write, appelez la méthode apply sur la collection PCollection dont vous souhaitez écrire les données, et transmettez la transformation Write appropriée en tant qu'argument.

Java

Lorsque vous appelez la méthode apply pour appliquer une transformation Write à une collection PCollection, la valeur renvoyée est un objet du type PDone. L'objet PDone est un objet de résultat banal qui peut être ignoré.

Écrire dans plusieurs fichiers de sortie

Pour les données d'entrée et de sortie basées sur des fichiers, telles que les données texte, les transformations Write écrivent par défaut dans plusieurs fichiers de sortie. Le service Cloud Dataflow génère toujours automatiquement des fichiers de sortie fragmentés. Lorsque vous transmettez un nom de fichier de sortie à une transformation Write, ce nom de fichier est utilisé comme préfixe pour tous les fichiers de sortie générés par cette transformation Write.

Vous pouvez ajouter un suffixe à chaque fichier de sortie en spécifiant le suffixe voulu pour votre transformation Write.

Prenons par exemple l'utilisation suivante de la transformation Write, qui écrit plusieurs fichiers de sortie dans un emplacement Cloud Storage. Chaque fichier est désigné par le préfixe "numbers", un tag numérique unique et le suffixe ".csv".

Java

  records.apply(TextIO.Write.named("WriteToText")
			    .to("gs://my_bucket/path/to/numbers")
			    .withSuffix(".csv"));

La transformation Write ci-dessus écrira plusieurs fichiers de sortie à l'emplacement Cloud Storage indiqué, avec le préfixe "numbers" et le suffixe ".csv".

API d'E/S incluses dans les SDK Dataflow

Certaines API de source et de récepteur sont incluses dans les SDK Dataflow.

Java

Le SDK Dataflow pour Java fournit des transformations Read et Write pour plusieurs formats de données courants, dont les suivants :

API d'E/S supplémentaires

En plus des API d'E/S, les SDK Dataflow fournissent une API extensible, qui vous permet de créer vos propres sources et récepteurs de données personnalisés.

Java

Vous pouvez créer vos propres sources d'entrée et récepteurs de sortie personnalisés à l'aide des API de source et de récepteur de Dataflow.

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

Envoyer des commentaires concernant…

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