Caricare i dati in batch utilizzando l'API Storage Scrivi
Questo documento descrive come utilizzare API BigQuery StorageWrite per caricare i dati in batch in BigQuery.
Negli scenari di caricamento in batch, un'applicazione scrive i dati ed li esegue il commit come una transazione atomica. Quando si utilizza l'API Storage Scrivi per caricare in batch crea uno o più stream in tipo in attesa. Tipi in attesa supportati transazioni a livello di stream. I record rimangono memorizzati nel buffer in stato In attesa fino a quando esegui il commit del flusso.
Per i carichi di lavoro batch, valuta la possibilità di utilizzare anche l'API Storage Scrivi tramite il connettore Apache Spark SQL per BigQuery utilizzando Dataproc, anziché scrivere modelli il codice API Storage Scrivi.
L'API StorageWrite è adatta a una pipeline di dati dell'architettura. Un processo principale crea una serie di flussi. Per ogni stream, Assegna un thread worker o un processo separato per scrivere una parte del batch e i dati di Google Cloud. Ogni worker crea una connessione al proprio flusso, scrive i dati e finalizza e il suo flusso al termine dell'operazione. Dopo che tutti i worker segnalano il completamento riuscito al processo principale, quest'ultimo esegue il commit dei dati. In caso di errore di un worker, dei dati assegnata non comparirà nei risultati finali e l'intero worker può essere ritentato in sicurezza. In una pipeline più sofisticata, i worker l'avanzamento del processo riportando l'ultimo offset scritto al prompt principale e il processo di sviluppo. Questo approccio può generare una pipeline robusta che è resiliente errori.
Carica dati in batch usando il tipo In attesa
Per utilizzare il tipo In attesa, l'applicazione procede nel seguente modo:
- Chiama
CreateWriteStream
per creare uno o più stream in tipo In attesa. - Per ogni flusso, chiama
AppendRows
in un loop per scrivere batch di record. - Per ogni stream, chiama
FinalizeWriteStream
. Dopo aver chiamato questo metodo, non può più scrivere righe nel flusso. Se chiamiAppendRows
dopo chiamandoFinalizeWriteStream
, restituisce unStorageError
conStorageErrorCode.STREAM_FINALIZED
nell'erroregoogle.rpc.Status
. Per ulteriori informazioni sul modello di erroregoogle.rpc.Status
, consulta Errori. - Chiama
BatchCommitWriteStreams
per eseguire il commit degli stream. Dopo aver chiamato i dati diventano disponibili per la lettura. In caso di errore eseguendo il commit di uno qualsiasi dei flussi, l'errore viene restituito nell'stream_errors
campo delBatchCommitWriteStreamsResponse
Il commit è un'operazione atomica e puoi eseguire il commit di più flussi contemporaneamente. Il commit di un flusso può essere eseguito una sola volta. Di conseguenza, se l'operazione di commit non va a buon fine, puoi riprovare. Finché non esegui il commit di uno stream, i dati rimangono in attesa e non sono visibili alle letture.
Dopo la finalizzazione del flusso e prima del commit, i dati possono rimanere il buffer per un massimo di 4 ore. Gli stream in attesa devono essere confermati entro 24 ore. Esiste un limite di quota dimensione totale del buffer dello stream in attesa.
Il seguente codice mostra come scrivere dati in tipo In sospeso:
C#
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API C# BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Vai
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Go BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Java
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Node.js
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Node.js BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Python
Questo esempio mostra un semplice record con due campi. Per un esempio più lungo,
mostra come inviare diversi tipi di dati, inclusi i tipi STRUCT
; consulta le
append_rows_proto2 sample su GitHub.
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Questo esempio di codice dipende da un modulo di protocollo compilato,
customer_record_pb2.py
. Per creare il modulo compilato, esegui
protoc --python_out=. customer_record.proto
, dove protoc
è il
il compilatore del buffer di protocollo. Il file customer_record.proto
definisce il formato
dei messaggi usati nell'esempio Python.