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 batch, un'applicazione scrive i dati ed esegue il commit dei dati come una transazione atomica. Quando si utilizza l'API Storage Scrivi per caricare in batch crea uno o più stream in tipo in attesa. Il tipo In attesa supporta le transazioni a livello di stream. I record vengono memorizzati in un buffer in stato di attesa fino a quando non committi lo stream.
Per i carichi di lavoro batch, valuta la possibilità di utilizzare anche l'API StorageWrite 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 stream. Per ogni stream, assegna un thread di lavoro o un processo separato per scrivere una parte dei dati del batch. Ogni worker crea una connessione al proprio stream, scrive i dati e completa lo stream al termine. Dopo che tutti i worker segnalano il completamento riuscito al processo principale, quest'ultimo esegue il commit dei dati. Se un worker non riesce, la parte assegnata dei dati non viene visualizzata nei risultati finali e l'intero worker può essere riavviato 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 solida e resiliente ai guasti.
Carica dati in batch usando il tipo In attesa
Per utilizzare il tipo in attesa, l'applicazione esegue le seguenti operazioni:
- Chiama
CreateWriteStream
per creare uno o più stream in tipo In attesa. - Per ogni stream, chiama
AppendRows
in un ciclo 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 questo metodo, i dati diventano disponibili per la lettura. Se si verifica un errore durante l'esecuzione del commit di uno degli stream, l'errore viene restituito nel campostream_errors
delBatchCommitWriteStreamsResponse
.
L'commit è un'operazione atomica e puoi eseguire il commit di più stream 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. Fino a quando non esegui il commit di uno stream, i dati sono in attesa e non 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 la documentazione di riferimento dell'API BigQuery C#.
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 la documentazione di riferimento dell'API BigQuery Go.
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 saperne di più, consulta Configurare 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 record semplice con due campi. Per un esempio più lungo che mostra come inviare diversi tipi di dati, inclusi i tipi STRUCT
, consulta l'esempio append_rows_proto2 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 autenticarti a BigQuery, configura le 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, eseguiprotoc --python_out=. customer_record.proto
, dove protoc
è il compilatore del buffer del protocollo. Il file customer_record.proto
definisce il formato
dei messaggi usati nell'esempio Python.