Fichiers texte

Les SDK Dataflow fournissent des transformations Read et Write intégrées pour les fichiers texte. Ces transformations supposent que les fichiers texte à lire ou dans lesquels écrire sont délimités par une nouvelle ligne. Cela signifie que chaque "enregistrement" dans le fichier correspond à une ligne de texte unique se terminant par un caractère de nouvelle ligne.

Vous pouvez effectuer des opérations de lecture et d'écriture dans des fichiers locaux (c'est-à-dire des fichiers sur le système où votre programme Dataflow est exécuté) et des fichiers distants dans Google Cloud Storage.

Java

Remarque : Si vous souhaitez que votre pipeline effectue des opérations en lecture ou en écriture dans des fichiers locaux, vous devez utiliser DirectPipelineRunner pour exécuter votre pipeline en local. En effet, les instances de Google Compute Engine auxquelles le service Dataflow fait appel pour exécuter ce pipeline ne pourront pas accéder en lecture ni en écriture aux fichiers situés sur votre ordinateur local.

Lire depuis des fichiers texte

Java

Pour lire depuis un fichier texte, appliquez TextIO.Read à votre objet Pipeline. TextIO.Read lit le fichier texte et renvoie une PCollection<String>. Chaque String dans la collection PCollection résultante représente une ligne du fichier texte.

  PipelineOptions options = PipelineOptionsFactory.create();
  Pipeline p = Pipeline.create(options);

  PCollection<String> lines = p.apply(
    TextIO.Read.named("ReadMyFile").from("gs://some/inputData.txt"));

Dans cet exemple, le code appelle apply sur l'objet Pipeline et transmet TextIO.Read en tant que transformation Read. L'opération .named fournit un nom de transformation pour l'opération de lecture et l'opération .from fournit le chemin d'accès au fichier. La valeur renvoyée de apply correspond aux PCollection<String> résultantes nommées lines.

Comme avec d'autres sources Dataflow basées sur des fichiers, la transformation TextIO.Read peut lire plusieurs fichiers d'entrée. Consultez la section Lire des données d'entrée pour savoir comment gérer plusieurs fichiers lorsque vous effectuez des opérations de lecture à partir de sources basées sur des fichiers.

Écrire dans des fichiers texte

Java

Pour transférer des données vers des fichiers texte, appliquez TextIO.Write à la PCollection que vous souhaitez générer. Tenez compte des points suivants lorsque vous utilisez TextIO.Write :

  • Vous ne pouvez appliquer TextIO.Write qu'à une PCollection<String>. Vous devrez peut-être utiliser un ParDo simple pour mettre en forme vos données d'une classe PCollection intermédiaire vers une PCollection<String> avant d'écrire avec TextIO.Write.
  • Chaque élément de la sortie PCollection représentera une ligne dans le fichier texte résultant.
  • Les opérations d'écriture basées sur les fichiers de Dataflow, telles que TextIO.Write, écrivent dans plusieurs fichiers de sortie par défaut. Pour plus d'informations, consultez la section Écrire des données de sortie.
  PCollection<String> filteredWords = ...;
  filteredWords.apply(TextIO.Write.named("WriteMyFile")
                                  .to("gs://some/outputData"));

Dans cet exemple, le code appelle apply sur l'objet PCollection et transmet TextIO.Write en tant que transformation Write. L'opération .named fournit un nom de transformation pour l'opération de lecture et l'opération .to fournit le chemin d'accès au fichier.

Lire depuis des fichiers texte compressés

Java

Vous pouvez utiliser la transformation TextIO.Read avec des fichiers texte compressés, en particulier des fichiers compressés avec gzip et bzip2. Pour lire un fichier compressé, vous devez spécifier le type de compression :

Vous spécifiez le type de compression à l'aide de la méthode .withCompressionType.

  Pipeline p = ...;
  p.apply(TextIO.Read.named("ReadMyFile")
                     .from("gs://some/inputData.gz")
                     .withCompressionType(TextIO.CompressionType.GZIP));

TextIO n'est actuellement pas compatible avec l'écriture dans des fichiers compressés.

Si votre fichier a une extension .gz ou .bz2, vous n'avez pas besoin de spécifier explicitement un type de compression. Le type de compression par défaut, AUTO, examine les extensions de fichier pour déterminer le type de compression correct pour un fichier. Cela fonctionne même avec les fichiers glob, où les fichiers résultant du fichier glob peuvent être un mélange de types .gz, .bz2 et non compressés.

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

Envoyer des commentaires concernant…

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