L'elaborazione dei dati in Dataflow può essere altamente parallelizzata. Gran parte di questi Il parallelismo è gestito automaticamente da Dataflow. I connettori I/O si trovano al confine tra la pipeline e altre parti dell'architettura, come lo spazio di archiviazione dei file, i database e i sistemi di messaggistica. Di conseguenza, i connettori I/O spesso tengono considerazioni specifiche per raggiungere il parallelismo.
Best practice generali
L'elenco seguente descrive le best practice generali per l'utilizzo dei connettori I/O in Dataflow.
Leggi la documentazione di Javadoc, Pydoc o Go per i connettori nel tuo una pipeline o un blocco note personalizzato. Per ulteriori informazioni, vedi Connettori I/O nella documentazione di Apache Beam.
Utilizza la versione più recente dell'SDK Apache Beam. I connettori I/O di continuo miglioramento, l'aggiunta di funzionalità e la risoluzione di problemi noti.
Quando sviluppi una pipeline, è importante bilanciare il parallelismo del compito. Se un job ha troppo poco parallelismo, può essere lento e i dati possono nel codice sorgente. Tuttavia, un parallelismo eccessivo può sovraccaricare un sink con molte richieste.
Non fare affidamento sull'ordine degli elementi. In generale, Dataflow non garantisce l'ordine degli elementi in una raccolta.
Se nell'SDK che preferisci non è disponibile un connettore I/O, valuta la possibilità di utilizzare il framework multilingua per utilizzare un connettore I/O da un altro SDK. Inoltre, non sempre i connettori presentano le stesse caratteristiche degli SDK. Se un connettore di un altro SDK fornisce un'istanza di cui hai bisogno, puoi usarla come trasformazione cross-language.
In generale, scrivere connettori di I/O personalizzati è impegnativo. Utilizza un connettore esistente, se possibile. Se devi implementare un connettore I/O personalizzato, lettura Sviluppare un nuovo connettore I/O.
Se una pipeline non va a buon fine, controlla se ci sono errori registrati dai connettori di I/O. Consulta: Risolvi gli errori di Dataflow.
Quando esegui scritture da Dataflow a un connettore, ti consigliamo di utilizzare un ErrorHandler per gestire eventuali scritture non riuscite o letture con formato non corretto. Questo tipo di gestione degli errori viene supportato per i seguenti I/O Java in Apache Beam 2.55.0 e versioni successive: BigQueryIO, BigtableIO, PubSubIO, KafkaIO, FileIO, TextIO e AvroIO.
Best practice per i singoli connettori I/O
I seguenti argomenti elencano le best practice per i singoli connettori I/O:
Connettore I/O | Leggi | Scrittura |
---|---|---|
Apache Iceberg | Leggi da Apache Iceberg | Scrivi ad Apache Iceberg |
BigQuery | Lettura da BigQuery | Scrivere in BigQuery |
Bigtable | Lettura da Bigtable | Scrivere in Bigtable |
Cloud Storage | Lettura da Cloud Storage | Scrivere in Cloud Storage |
Pub/Sub | Leggere da Pub/Sub | Scrivere in Pub/Sub |
Connettori I/O supportati da Google
Nella tabella seguente sono elencati i connettori Apache Beam I/O supportati e Dataflow. Per un elenco completo dei connettori I/O di Apache Beam, inclusi quelli sviluppati dalla community di Apache Beam e supportati da altri runner, consulta Connettori I/O nella documentazione di Apache Beam.
Nome connettore I/O | Java | Python | Vai |
---|---|---|---|
AvroIO | Supportato | Supportato | Supportato |
BigQueryIO | Supportato | Supportato | Supportato |
BigTableIO | Supportato | Lavello supportato | Lavello supportato |
DatastoreIO | Supportato | Supportato | Supportato |
FhirIO (sanità) | Supportato | Non disponibile | Supportato |
FileIO | Supportato | Supportato | Supportato |
GcsFileSystem | Supportato | Supportato | Supportato |
JdbcIO | Supportato | Supporto di più lingue | Supporto di più lingue |
KafkaIO | Supportato | Supporto di più lingue | Supporto in più lingue |
LocalFileSystem | Supportato | Supportato | Supportato |
ParquetIO | Supportato | Supportato | Supportato |
PubSubIO | Supportato | Supportato | Supportato |
SpannerIO | Supportato | Supporto di più lingue | Supportato |
TextIO | Supportato | Supportato | Supportato |
TFRecordIO | Supportato | Supportato | Non disponibile |
Passaggi successivi
- Leggi la documentazione di Apache Beam relativa ai connettori I/O.