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,TextIOeAvroIO.
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/O | Leggi | Scrittura |
|---|---|---|
| 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
- Leggi la documentazione di Apache Beam per i connettori I/O.
- Caratteristiche delle prestazioni delle pipeline da Pub/Sub a BigQuery