Best practice per i connettori I/O di Apache Beam

L'elaborazione dei dati in Dataflow può essere altamente parallelizzata. Gran parte di questo parallelismo viene gestito automaticamente da Dataflow. I connettori I/O si trovano al confine tra la pipeline e altre parti dell'architettura, come l'archiviazione di file, i database e i sistemi di messaggistica. Pertanto, i connettori I/O spesso hanno considerazioni specifiche per ottenere il parallelismo.

Best practice generali

Il seguente elenco descrive le best practice generali per l'utilizzo dei connettori I/O in Dataflow.

  • Leggi la documentazione Javadoc, Pydoc o Go per i connettori nella tua pipeline. Per saperne di più, consulta la sezione Connettori I/O nella documentazione di Apache Beam.

  • Utilizza l'ultima versione dell'SDK Apache Beam. I connettori I/O vengono migliorati continuamente, aggiungendo funzionalità e risolvendo problemi noti.

  • Quando sviluppi una pipeline, è importante bilanciare il parallelismo del job. Se un job ha un parallelismo troppo basso, può essere lento e i dati possono accumularsi nell'origine. Tuttavia, un parallelismo eccessivo può sovraccaricare un sink con troppe richieste.

  • Non fare affidamento sull'ordine degli elementi. In generale, Dataflow non garantisce l'ordine degli elementi in una raccolta.

  • Se un connettore I/O non è disponibile nell'SDK che preferisci, valuta la possibilità di utilizzare il framework cross-language per utilizzare un connettore I/O di un altro SDK. Inoltre, i connettori non sempre hanno la stessa parità di funzionalità tra gli SDK. Se un connettore di un altro SDK fornisce una funzionalità di cui hai bisogno, puoi utilizzarlo come trasformazione cross-language.

  • In generale, scrivere connettori I/O personalizzati è difficile. Utilizza un connettore esistente, se possibile. Se devi implementare un connettore I/O personalizzato, leggi Sviluppare un nuovo connettore I/O.

  • Se una pipeline non va a buon fine, controlla gli errori registrati dai connettori I/O. Consulta la sezione Risolvere gli errori di Dataflow.

  • Quando esegui scritture da Dataflow a un connettore, valuta la possibilità di utilizzare un ErrorHandler per gestire eventuali scritture non riuscite o letture non corrette. Questo tipo di gestione degli errori è supportato per i seguenti I/O Java nelle versioni 2.55.0 e successive di Apache Beam: BigQueryIO, BigtableIO, PubSubIO, KafkaIO, FileIO, TextIO e AvroIO.

Per un esempio di benchmark delle prestazioni in una pipeline di streaming Dataflow, consulta Caratteristiche delle prestazioni delle pipeline Pub/Sub-BigQuery.

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 Leggere da Apache Iceberg Scrivere su Apache Iceberg
Apache Kafka Lettura da Apache Kafka Scrivi su Apache Kafka
BigQuery Lettura da BigQuery Scrivi in BigQuery
Bigtable Lettura da Bigtable Scrivere su Bigtable
Cloud Storage Lettura da Cloud Storage Scrivi in Cloud Storage
Pub/Sub Lettura da Pub/Sub Scrivi in Pub/Sub

Connettori I/O supportati da Google

La tabella seguente elenca i connettori I/O di Apache Beam supportati da 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 del 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 di 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