Daten im Batch mit der Storage Write API laden
In diesem Dokument wird beschrieben, wie Sie mit der BigQuery Storage Write API Daten im Batchverfahren in BigQuery laden.
In Szenarien mit Batchladevorgรคngen schreibt eine Anwendung Daten und รผbergibt sie per Commit in einer einzigen unteilbaren Transaktion. Wenn Sie die Storage Write API fรผr das Laden von Daten im Batch verwenden, erstellen Sie einen oder mehrere Streams vom Typ โAusstehendโ. Der Typ โAusstehendโ unterstรผtzt Transaktionen auf Streamebene. Datensรคtze werden im Status "Ausstehend" zwischengespeichert, bis Sie den Stream per Commit รผbergeben.
Prรผfen Sie bei Batcharbeitslasten auch die Verwendung der Storage Write API รผber den Apache Spark SQL Connector fรผr BigQuery mithilfe von Dataproc, anstatt benutzerdefinierten Storage Write API-Code zu schreiben.
Die Storage Write API eignet sich gut fรผr eine Datenpipeline-Architektur. Ein Hauptprozess erzeugt eine Reihe von Streams. Jedem Stream wird ein Worker-Thread oder ein separater Prozess zugewiesen, um einen Teil der Batch-Daten zu schreiben. Jeder Worker erstellt eine Verbindung zu seinem Stream, schreibt Daten und finalisiert seinen Stream, wenn er abgeschlossen ist. Nachdem alle Worker den erfolgreichen Abschluss zum Hauptprozess signalisiert haben, รผbergibt der Hauptprozess die Daten per Commit. Wenn ein Worker fehlschlรคgt, wird der zugewiesene Teil der Daten nicht in den Endergebnissen angezeigt und der gesamte Worker kann wiederholt werden. In einer komplexeren Pipeline prรผfen Worker ihren Fortschritt, indem sie den letzten an den Hauptprozess geschriebenen Offset melden. Dieser Ansatz kann zu einer robusten Pipeline fรผhren, die ausfallsicher ist.
Daten im Batch unter Verwendung des Typs โAusstehendโ laden
Die Anwendung geht so vor, um den Typ โAusstehendโ zu verwenden:
- Rufen Sie
CreateWriteStream
auf, um einen oder mehrere Streams vom Typ โAusstehendโ zu erstellen. - Rufen Sie fรผr jeden Stream
AppendRows
in einer Schleife auf, um Datensรคtze in Batches zu schreiben. - Rufen Sie fรผr jeden Stream
FinalizeWriteStream
auf. Nach dem Aufrufen dieser Methode kรถnnen Sie keine weiteren Zeilen in den Stream schreiben. Wenn SieAppendRows
nach dem Aufruf vonFinalizeWriteStream
aufrufen, wird einStorageError
mitStorageErrorCode.STREAM_FINALIZED
im Fehlergoogle.rpc.Status
zurรผckgegeben. Weitere Informationen zum Fehlermodellgoogle.rpc.Status
finden Sie unter Fehler. - Rufen Sie
BatchCommitWriteStreams
auf, um die Streams per Commit zu รผbergeben. Nach dem Aufrufen dieser Methode stehen die Daten zum Lesen zur Verfรผgung. Wenn beim Commit eines der Streams ein Fehler auftritt, wird der Fehler im Feldstream_errors
derBatchCommitWriteStreamsResponse
zurรผckgegeben.
Das Commit ist ein unteilbarer Vorgang und Sie kรถnnen mehrere Streams gleichzeitig per Commit รผbergeben. Fรผr einen Stream kann nur einmal ein Commit durchgefรผhrt werden. Wenn der Commit-Vorgang fehlschlรคgt, kann der Vorgang sicher wiederholt werden. Bis zum Commit eines Streams stehen die Daten aus und sind fรผr Lesevorgรคnge nicht sichtbar.
Nachdem der Stream abgeschlossen wurde und bevor er รผbergeben wird, kรถnnen die Daten bis zu 4 Stunden im Puffer verbleiben. Ausstehende Streams mรผssen innerhalb von 24 Stunden per Commit bestรคtigt werden. Fรผr die Gesamtgrรถรe des Zwischenspeichers fรผr ausstehende Streams gilt ein Kontingentlimit.
Der folgende Code zeigt, wie Daten vom Typ โAusstehendโ geschrieben werden.
C#
Informationen zum Installieren und Verwenden der Clientbibliothek fรผr BigQuery finden Sie unter BigQuery-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery C# API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten fรผr Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung fรผr Clientbibliotheken einrichten.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek fรผr BigQuery finden Sie unter BigQuery-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Go API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten fรผr Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung fรผr Clientbibliotheken einrichten.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek fรผr BigQuery finden Sie unter BigQuery-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten fรผr Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung fรผr Clientbibliotheken einrichten.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek fรผr BigQuery finden Sie unter BigQuery-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten fรผr Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung fรผr Clientbibliotheken einrichten.
Python
Dieses Beispiel zeigt einen einfachen Datensatz mit zwei Feldern. Ein lรคngeres Beispiel, das zeigt, wie Sie verschiedene Datentypen einschlieรlich STRUCT
-Typen senden, finden Sie im append_rows_proto2-Beispiel auf GitHub.
Informationen zum Installieren und Verwenden der Clientbibliothek fรผr BigQuery finden Sie unter BigQuery-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten fรผr Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung fรผr Clientbibliotheken einrichten.
Dieses Codebeispiel hรคngt vom kompilierten Protokollmodul customer_record_pb2.py
ab. Fรผhren Sie zum Erstellen des kompilierten Moduls protoc --python_out=. customer_record.proto
aus, wobei protoc
der Protokollzwischenspeicher-Compiler ist. Die Datei customer_record.proto
definiert das Format der im Python-Beispiel verwendeten Nachrichten.