Von Dataflow in Bigtable schreiben

Verwenden Sie zum Schreiben von Daten aus Dataflow in Bigtable den Bigtable-E/A-Connector von Apache Beam.

Parallelität

Die Parallelität wird durch die Anzahl der Knoten im Bigtable-Cluster gesteuert. Jeder Knoten verwaltet einen oder mehrere Schlüsselbereiche, wobei sich Schlüsselbereiche als Teil des Load-Balancings zwischen Knoten verschieben können. Weitere Informationen finden Sie unter Leistung verstehen in der Bigtable-Dokumentation.

Ihnen wird die Anzahl der Knoten in den Clustern Ihrer Instanz in Rechnung gestellt. Siehe Bigtable-Preise.

Leistung

Die folgende Tabelle enthält Leistungsmesswerte für Bigtable-E/A-Schreibvorgänge. Die Arbeitslasten wurden mit dem Apache Beam SDK 2.48.0 für Java auf einem e2-standard2-Worker ausgeführt. Sie haben nicht Runner v2 verwendet.

100 Mio. Datensatz | 1 KB | 1 Spalte Durchsatz (Byte) Durchsatz (Elemente)
Schreiben 65 Mbit/s 60.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 im Allgemeinen die Verwendung von Transaktionen. Es wird nicht garantiert, dass Transaktionen idempotent sind, und Dataflow kann sie aufgrund von Wiederholungsversuchen mehrmals aufrufen. Dies führt zu unerwarteten Werten.

  • Ein einzelner Dataflow-Worker kann Daten für viele Schlüsselbereiche verarbeiten, was zu ineffizienten Schreibvorgängen in Bigtable führt. Die Verwendung von GroupByKey zum Gruppieren von Daten nach Bigtable-Schlüssel kann die Schreibleistung erheblich verbessern.

  • Wenn Sie große Datasets in Bigtable schreiben, sollten Sie withFlowControl aufrufen. Mit dieser Einstellung wird der Traffic zu Bigtable automatisch begrenzt, damit die Bigtable-Server genügend Ressourcen für die Bereitstellung von Daten haben.

Nächste Schritte