Pour lire des données de Cloud Storage vers Dataflow, utilisez le connecteur d'E/S Apache Beam TextIO
ou AvroIO
.
Inclure la dépendance de la bibliothèque Google Cloud
Pour utiliser le connecteur TextIO
ou AvroIO
avec Cloud Storage, incluez la dépendance suivante. Cette bibliothèque fournit un gestionnaire de schéma pour les noms de fichiers de type "gs://"
.
Java
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-io-google-cloud-platform</artifactId>
<version>${beam.version}</version>
</dependency>
Python
apache-beam[gcp]==VERSION
Go
import _ "github.com/apache/beam/sdks/v2/go/pkg/beam/io/filesystem/gcs"
Pour en savoir plus, consultez la section Installer le SDK Apache Beam.
Parallélisme
Les connecteurs TextIO
et AvroIO
acceptent deux niveaux de parallélisme :
- Les fichiers individuels sont indexés séparément, de sorte que plusieurs nœuds de calcul différents puissent les lire.
- Si les fichiers ne sont pas compressés, le connecteur peut lire des sous-plages de chaque fichier séparément, ce qui entraîne un niveau de parallélisme très élevé. Cette division n'est possible que si chaque ligne du fichier est un enregistrement pertinent. Elle n'est par exemple pas disponible par défaut pour les fichiers JSON.
Performances
Le tableau suivant présente les métriques de performances pour les opérations de lecture à partir de Cloud Storage. Les charges de travail ont été exécutées sur un nœud de calcul e2-standard2
à l'aide du SDK Apache Beam 2.49.0 pour Java. Elles n'ont pas utilisé l'exécuteur v2.
100 millions d'enregistrements | 1 Ko | 1 colonne | Débit (octets) | Débit (éléments) |
---|---|---|
Lecture | 320 Mbit/s | 320 000 éléments par seconde |
Ces métriques sont basées sur des pipelines de traitement par lot simples. Elles ont pour but de comparer les performances entre les connecteurs d'E/S et ne sont pas nécessairement représentatives des pipelines réels. Les performances des pipelines Dataflow sont complexes et dépendent du type de machine virtuelle, des données traitées, des performances des sources et des récepteurs externes, ainsi que du code utilisateur. Les métriques sont basées sur l'exécution du SDK Java et ne sont pas représentatives des caractéristiques de performances des SDK d'autres langages. Pour en savoir plus, consultez la page Performances d'E/S Beam.
Bonnes pratiques
Évitez d'utiliser
watchForNewFiles
avec Cloud Storage. Cette approche n'est pas adaptée pour les pipelines de production volumineux en termes de scaling, car le connecteur doit conserver une liste de fichiers observés en mémoire. Cette liste ne peut pas être vidée de la mémoire, ce qui réduit la mémoire de travail des nœuds de calcul au fil du temps. Envisagez plutôt d'utiliser les notifications Pub/Sub pour Cloud Storage. Pour en savoir plus, consultez la page Modèles de traitement des fichiers.Si le nom de fichier et le contenu du fichier sont tous deux des données utiles, utilisez la classe
FileIO
pour lire les noms de fichiers. Par exemple, un nom de fichier peut contenir des métadonnées utiles lors du traitement des données du fichier. Pour en savoir plus, consultez la section Accéder aux noms de fichiers. La documentation surFileIO
présente également un exemple de ce modèle.
Étapes suivantes
- Consultez la documentation sur l'API
TextIO
. - Consultez la liste des modèles fournis par Google.