Best Practices für Apache Beam-E/A-Connectors

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 Konnektoren 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-Anschlüsse 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 in Ihrem bevorzugten SDK kein E/A-Connector verfügbar ist, können Sie das sprachenübergreifende Framework verwenden, um einen E/A-Connector aus einem anderen SDK zu verwenden. 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.

  • Im Allgemeinen ist das Schreiben benutzerdefinierter E/A-Connectors eine Herausforderung. Verwenden Sie nach Möglichkeit einen vorhandenen Connector. Wenn Sie einen benutzerdefinierten E/A-Connector implementieren müssen, lesen Sie den Hilfeartikel Neuen E/A-Connector entwickeln.

  • Wenn eine Pipeline fehlschlägt, prüfen Sie, ob von I/O-Connectorsn protokollierte Fehler vorliegen. Weitere Informationen finden Sie unter Dataflow-Fehler beheben.

  • Wenn Sie Schreibvorgänge von Dataflow an einen Connector ausführen, sollten Sie einen ErrorHandler verwenden, um fehlgeschlagene Schreibvorgänge oder fehlerhafte Lesevorgänge zu verarbeiten. Diese Art der Fehlerbehandlung wird in Apache Beam-Versionen ab 2.55.0 für die folgenden Java-E/A unterstützt: BigQueryIO, BigtableIO, PubSubIO, KafkaIO, FileIO, TextIO und AvroIO.

Best Practices für einzelne E/A-Anschlüsse

In den folgenden Themen werden Best Practices für einzelne E/A-Anschlüsse aufgeführt:

E/A-AnschlussLesenSchreiben
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 Unterstützter Abfluss Unterstützter Abfluss
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