Verwenden Sie zum Lesen von Daten aus Cloud Storage in Dataflow den E/A-Connector TextIO
oder AvroIO
von Apache Beam.
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
Einfach loslegen (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 Connectors TextIO
und AvroIO
unterstützen zwei Parallelitätsebenen:
- Einzelne Dateien werden separat verschlüsselt, damit mehrere Worker sie lesen können.
- Wenn die Dateien nicht komprimiert sind, kann der Connector Unterbereiche jeder Datei separat lesen. Dies führt zu einem sehr hohen Parallelitätsgrad. Diese Aufteilung ist nur möglich, wenn jede Zeile in der Datei ein aussagekräftiger Datensatz ist. Beispielsweise ist sie für JSON-Dateien nicht standardmäßig verfügbar.
Leistung
Die folgende Tabelle enthält Leistungsmesswerte zum 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. Sie haben nicht Runner v2 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 Batchpipelines. Sie sollen die Leistung von E/A-Connectors vergleichen 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. 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 Leistung von Beam IO.
Best Practices
Vermeiden Sie die Verwendung von
watchForNewFiles
mit Cloud Storage. Dieser Ansatz wird bei großen Produktionspipelines schlecht skaliert, da der Connector eine Liste der gesehenen Dateien im Speicher aufbewahren muss. Die Liste kann nicht aus dem Speicher gelöscht werden, wodurch sich der Arbeitsspeicher der Worker im Laufe der Zeit reduziert. Verwenden Sie stattdessen Pub/Sub-Benachrichtigungen für Cloud Storage. Weitere Informationen finden Sie unter Dateiverarbeitungsmuster.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 für die Verarbeitung der Daten in der Datei nützlich sind. Weitere Informationen finden Sie unter Auf Dateinamen zugreifen. Die Dokumentation zuFileIO
enthält 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.