Per leggere i dati da Cloud Storage a Dataflow, utilizza il comando
Apache Beam TextIO
o AvroIO
Connettore I/O.
Includi la dipendenza dalla libreria Google Cloud
Per utilizzare il connettore TextIO
o AvroIO
con Cloud Storage, includi
la seguente dipendenza. Questa libreria fornisce un gestore dello schema per i nomi dei file "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
Vai
import _ "github.com/apache/beam/sdks/v2/go/pkg/beam/io/filesystem/gcs"
Per ulteriori informazioni, vedi Installa l'SDK Apache Beam.
Abilita gRPC sul connettore Apache Beam I/O in Dataflow
Puoi connetterti a Cloud Storage utilizzando gRPC tramite il connettore I/O Apache Beam su Dataflow. gRPC è un framework RPC (Remote Procedure Call) open source ad alte prestazioni sviluppato da Google che puoi utilizzare per interagire con Cloud Storage.
Per accelerare le richieste di lettura del job Dataflow a Cloud Storage, puoi abilitare il connettore Apache Beam I/O su Dataflow per utilizzare gRPC.
Riga di comando
- Assicurati di utilizzare lo Versione dell'SDK Apache Beam 2.55.0 o versioni successive.
- Per eseguire un job Dataflow, utilizza l'opzione di pipeline
--additional-experiments=use_grpc_for_gcs
. Per informazioni sulle diverse opzioni di pipeline, consulta Flag facoltativi.
SDK Apache Beam
- Assicurati di utilizzare lo Versione dell'SDK Apache Beam 2.55.0 o versioni successive.
-
Per eseguire un job Dataflow, utilizza
--experiments=use_grpc_for_gcs
o l'opzione della pipeline. Per informazioni sulle diverse opzioni della pipeline, consulta Di base opzioni.
Puoi configurare il connettore I/O di Apache Beam su Dataflow per generare metriche relative a gRPC in Cloud Monitoring. Le metriche relative a gRPC possono aiutarti a:
- Monitora e ottimizza le prestazioni delle richieste gRPC a Cloud Storage.
- Risolvi i problemi ed esegui il debug.
- Ottieni informazioni sull'utilizzo e sul comportamento della tua applicazione.
Per informazioni su come configurare il connettore I/O di Apache Beam su Dataflow per generare metriche relative a gRPC, consulta Utilizzare le metriche lato client. Se la raccolta delle metriche non è necessaria per il tuo caso d'uso, puoi scegliere di disattivarla. Per istruzioni, vedi Disattivare le metriche lato client.
Parallelismo
I connettori TextIO
e AvroIO
supportano due livelli di parallelismo:
- I singoli file vengono codificati separatamente, in modo che possano essere letti da più utenti.
- Se i file non sono compressi, il connettore può leggere i sottointervalli di ciascun file distintamente, il che comporta un livello di parallelismo molto elevato. Questa suddivisione è possibile solo se ogni riga del file è un record significativo. Ad esempio, non è disponibile per impostazione predefinita per i file JSON.
Prestazioni
La tabella seguente mostra le metriche sul rendimento per la lettura da Cloud Storage. I carichi di lavoro sono stati eseguiti su un e2-standard2
worker utilizzando l'SDK Apache Beam 2.49.0 per Java. Non ha utilizzato Runner v2.
100 milioni di record | 1 kB | 1 colonna | Velocità effettiva (byte) | Velocità effettiva (elementi) |
---|---|---|
Leggi | 320 MB/s | 320.000 elementi al secondo |
Queste metriche si basano su semplici pipeline batch. Sono studiati per confrontare il rendimento tra connettori I/O e non sono necessariamente rappresentativi delle pipeline reali. Le prestazioni della pipeline Dataflow sono complesse e sono una funzione del tipo di VM, la configurazione in fase di elaborazione, le prestazioni di origini e sink esterni e il codice utente. Le metriche si basano sull'esecuzione dell'SDK Java e non sono rappresentative delle caratteristiche di prestazioni di altri SDK per lingua. Per ulteriori informazioni, consulta Rendimento IO di Beam.
Best practice
Evita di utilizzare
watchForNewFiles
con Cloud Storage. Questo approccio non è scalabile per pipeline di produzione di grandi dimensioni, perché il connettore deve mantenere in memoria un elenco dei file visualizzati. La non può essere svuotato dalla memoria, il che riduce la memoria di lavoro dei worker nel tempo. Valuta la possibilità di utilizzare le notifiche Pub/Sub per Cloud Storage. Per ulteriori informazioni, consulta Modelli di elaborazione dei file.Se sia il nome file sia i contenuti del file sono dati utili, utilizza la classe
FileIO
per leggere i nomi file. Ad esempio, un nome file potrebbe contenere metadati utili per l'elaborazione dei dati nel file. Per ulteriori informazioni, consulta la sezione Accedere ai nomi file. Anche la documentazione diFileIO
mostra un esempio di questo pattern.
Passaggi successivi
- Leggi la documentazione dell'API
TextIO
. - Consulta l'elenco dei modelli forniti da Google.