Verwenden Sie einen der E/A-Connectors TextIO
oder AvroIO
von Apache Beam, um Daten aus Cloud Storage in Dataflow zu lesen.
Google Cloud-Bibliotheksabhängigkeit einschließen
Schließen Sie die folgende Abhängigkeit ein, um den TextIO
- oder AvroIO
-Connector mit Cloud Storage zu verwenden. Diese Bibliothek bietet einen Schema-Handler für "gs://"
-Dateinamen.
Java
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-io-google-cloud-platform</artifactId>
<version>${beam.version}</version>
</dependency>
Python
apache-beam[gcp]==VERSION
Go
import _ "github.com/apache/beam/sdks/v2/go/pkg/beam/io/filesystem/gcs"
Weitere Informationen finden Sie unter Apache Beam SDK installieren.
Parallelität
Die TextIO
- und AvroIO
-Connectors unterstützen zwei Parallelisierungsebenen:
- Einzelne Dateien werden separat verschlüsselt, damit sie von mehreren Workern gelesen werden können.
- Wenn die Dateien nicht komprimiert sind, kann der Connector Teilbereiche der einzelnen Dateien separat lesen, was zu einer sehr hohen Parallelität führt. Diese Aufteilung ist nur möglich, wenn jede Zeile in der Datei einen sinnvollen Datensatz enthält. So ist er beispielsweise standardmäßig nicht für JSON-Dateien verfügbar.
Leistung
Die folgende Tabelle enthält Leistungsmesswerte für das Lesen aus Cloud Storage. Die Arbeitslasten wurden auf einem e2-standard2
-Worker mit dem Apache Beam SDK 2.49.0 für Java ausgeführt. Runner v2 wurde nicht verwendet.
100 Mio. Datensätze | 1 KB | 1 Spalte | Durchsatz (Byte) | Durchsatz (Elemente) |
---|---|---|
Lesen | 320 Mbit/s | 320.000 Elemente pro Sekunde |
Diese Messwerte basieren auf einfachen Batch-Pipelines. Sie dienen zum Vergleich der Leistung zwischen E/A-Anschlüssen und sind nicht unbedingt repräsentativ für reale Pipelines. Die Leistung der Dataflow-Pipeline ist komplex und eine Funktion des VM-Typs, der verarbeiteten Daten, der Leistung externer Quellen und Senken sowie des Nutzercodes. Die Messwerte basieren auf der Ausführung des Java SDK und sind nicht repräsentativ für die Leistungsmerkmale anderer Sprach-SDKs. Weitere Informationen finden Sie unter Beam E/A-Leistung.
Best Practices
Verwenden Sie
watchForNewFiles
nicht mit Cloud Storage. Dieser Ansatz skaliert bei großen Produktionspipelines schlecht, da der Connector eine Liste der bereits verarbeiteten Dateien im Arbeitsspeicher speichern muss. Die Liste kann nicht aus dem Arbeitsspeicher gelöscht werden, was den Arbeitsspeicher der Worker im Laufe der Zeit reduziert. Verwenden Sie stattdessen Pub/Sub-Benachrichtigungen für Cloud Storage. Weitere Informationen finden Sie unter Muster für die Dateiverarbeitung.Wenn sowohl der Dateiname als auch der Dateiinhalt nützliche Daten sind, verwenden Sie die Klasse
FileIO
, um Dateinamen zu lesen. Ein Dateiname kann beispielsweise Metadaten enthalten, die bei der Verarbeitung der Daten in der Datei nützlich sind. Weitere Informationen finden Sie unter Auf Dateinamen zugreifen. In derFileIO
-Dokumentation finden Sie auch ein Beispiel für dieses Muster.
Nächste Schritte
TextIO
-API-Dokumentation lesen.- Sehen Sie sich die Liste der von Google bereitgestellten Vorlagen an.