Best practice per i connettori I/O di Apache Beam

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/OLeggiScrittura
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