Die Datenverarbeitung in Dataflow kann stark parallelisiert werden. Ein Großteil dieser Parallelität wird von Dataflow automatisch ausgeführt. E/A-Connectors befinden sich an der Grenze zwischen Ihrer Pipeline und anderen Teilen Ihrer Architektur, z. B. Dateispeicher, Datenbanken und Nachrichtensysteme. Daher haben E/A-Connectors häufig bestimmte Aspekte, um die Parallelität zu erreichen.
Allgemeine Best Practices
In der folgenden Liste werden allgemeine Best Practices für die Verwendung von E/A-Connectors in Dataflow beschrieben.
Lesen Sie die Javadoc-, Pydoc- oder Go-Dokumentation für die Connectors in Ihrer Pipeline. Weitere Informationen finden Sie in der Apache Beam-Dokumentation unter E/A-Connectors.
Verwenden Sie die neueste Version des Apache Beam SDK. I/O-Connectors werden kontinuierlich verbessert, indem Funktionen hinzugefügt und bekannte Probleme behoben werden.
Bei der Entwicklung einer Pipeline ist es wichtig, die Parallelität des Jobs auszugleichen. Wenn ein Job zu wenig Parallelität hat, kann er langsam sein und Daten können in der Quelle angesammelt werden. Zu viel Parallelität kann jedoch eine Senke mit zu vielen Anfragen überfordern.
Verlassen Sie sich nicht auf die Reihenfolge der Elemente. Im Allgemeinen gewährleistet Dataflow nicht die Reihenfolge der Elemente in einer Sammlung.
Wenn ein E/A-Connector in Ihrem bevorzugten SDK nicht verfügbar ist, können Sie das sprachübergreifende Framework verwenden, um einen E/A-Connector aus einem anderen SDK zu nutzen. Außerdem haben Connectors nicht immer die gleichen Features zwischen SDKs. Wenn ein Connector aus einem anderen SDK eine Funktion bietet, die Sie benötigen, können Sie ihn als sprachübergreifende Transformation verwenden.
Das Schreiben benutzerdefinierter E/A-Connectors ist im Allgemeinen schwierig. Verwenden Sie nach Möglichkeit einen vorhandenen Connector. Wenn Sie einen benutzerdefinierten E/A-Connector implementieren müssen, lesen Sie den Abschnitt Neuen E/A-Connector entwickeln.
Wenn eine Pipeline fehlschlägt, suchen Sie nach Fehlern, die von I/O-Connectors protokolliert wurden. Weitere Informationen finden Sie unter Fehlerbehebung bei Dataflow-Fehlern.
Wenn Sie Daten aus Dataflow in einen Connector schreiben, sollten Sie einen ErrorHandler verwenden, um fehlgeschlagene Schreibvorgänge oder fehlerhafte Lesevorgänge zu verarbeiten. Diese Art der Fehlerbehandlung wird für die folgenden Java-E/As in Apache Beam-Versionen 2.55.0 und höher unterstützt:
BigQueryIO,BigtableIO,PubSubIO,KafkaIO,FileIO,TextIOundAvroIO.
Ein Beispiel für Leistungsbenchmarks in einer Dataflow-Streamingpipeline finden Sie unter Leistungsmerkmale von Pub/Sub-zu-BigQuery-Pipelines.
Best Practices für einzelne I/O-Anschlüsse
In den folgenden Themen finden Sie Best Practices für einzelne E/A-Connectors:
| E/A-Anschluss | Lesen | Schreiben |
|---|---|---|
| Apache Iceberg | Aus Apache Iceberg lesen | In Apache Iceberg schreiben |
| Apache Kafka | Aus Apache Kafka lesen | In Apache Kafka schreiben |
| BigQuery | Aus BigQuery abrufen | In BigQuery schreiben |
| Bigtable | Aus Bigtable lesen | In Bigtable schreiben |
| Cloud Storage | Aus Cloud Storage lesen | In Cloud Storage schreiben |
| Pub/Sub | Aus Pub/Sub lesen | In Pub/Sub schreiben |
Von Google unterstützte E/A-Connectors
In der folgenden Tabelle sind die von Dataflow unterstützten Apache Beam-E/A-Connectors aufgeführt. Eine vollständige Liste der Apache Beam-E/A-Connectors, einschließlich derjenigen, die von der Apache Beam-Community entwickelt und von anderen Runnern unterstützt werden, finden Sie unter E/A-Connectors in der Apache Beam-Dokumentation.
| Name des E/A-Connectors | Java | Python | Go |
|---|---|---|---|
| AvroIO | Unterstützt | Unterstützt | Unterstützt |
| BigQueryIO | Unterstützt | Unterstützt | Unterstützt |
| BigtableIO | Unterstützt | Senke unterstützt | Senke unterstützt |
| DatastoreIO | Unterstützt | Unterstützt | Unterstützt |
| FhirIO (Gesundheitswesen) | Unterstützt | Nicht verfügbar | Unterstützt |
| FileIO | Unterstützt | Unterstützt | Unterstützt |
| GcsFileSystem | Unterstützt | Unterstützt | Unterstützt |
| JdbcIO | Unterstützt | Sprachübergreifende Unterstützung | Sprachübergreifende Unterstützung |
| KafkaIO | Unterstützt | Sprachübergreifende Unterstützung | Sprachübergreifende Unterstützung |
| LocalFileSystem | Unterstützt | Unterstützt | Unterstützt |
| ParquetIO | Unterstützt | Unterstützt | Unterstützt |
| PubsubIO | Unterstützt | Unterstützt | Unterstützt |
| SpannerIO | Unterstützt | Sprachübergreifende Unterstützung | Unterstützt |
| TextIO | Unterstützt | Unterstützt | Unterstützt |
| TFRecordIO | Unterstützt | Unterstützt | Nicht verfügbar |
Nächste Schritte
- Lesen Sie die Apache Beam-Dokumentation zu E/A-Connectors.
- Leistungsmerkmale von Pub/Sub-zu-BigQuery-Pipelines