Risoluzione dei problemi delle sottoscrizioni BigQuery

Questa pagina fornisce alcuni suggerimenti comuni per le sottoscrizioni BigQuery.

Controllare lo stato di una sottoscrizione BigQuery

Per controllare lo stato di una sottoscrizione, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina dell'abbonamento Pub/Sub.

    Vai ad Abbonamenti

  2. Controlla l'icona dello stato per la tua sottoscrizione BigQuery.

    Se l'icona è un segno di spunta verde, l'abbonamento è integro.

    Se l'icona è un punto esclamativo rosso, l'abbonamento è in stato di errore.

  3. Fai clic sulla sottoscrizione BigQuery.

    Si apre la pagina dei dettagli dell'abbonamento.

  4. Controlla lo stato dell'abbonamento per vedere il messaggio di errore.

  5. A seconda del messaggio di errore, vai alla sezione pertinente di questa pagina per la risoluzione del problema.

Una volta risolto il problema, l'abbonamento torna a uno stato di integrità.

Impossibile creare o aggiornare l'abbonamento

Di seguito sono riportati alcuni problemi comuni che potresti riscontrare in caso di problemi durante la creazione o l'aggiornamento di un abbonamento BigQuery.

Errore tabella non trovata

Se la tabella specificata nel flusso di lavoro di creazione o aggiornamento della sottoscrizione non esiste, il flusso di lavoro restituisce un errore di tabella non trovata. Nella console Google Cloud, il messaggio è simile al seguente:

The BigQuery table or dataset specified cannot be found.

Per risolvere il problema, crea la tabella e assicurati di poterne controllare lo state prima di utilizzarla con un abbonamento BigQuery.

Errore di mancata corrispondenza dello schema

Se gli schemi della tabella e l'argomento non sono compatibili, il flusso di lavoro per la creazione o l'aggiornamento della sottoscrizione restituisce un errore di mancata corrispondenza dello schema. Nella console Google Cloud, il messaggio è simile al seguente:

Incompatible schema type for field project_ids: expected INT64, got STRING

Il messaggio di errore specificato riguarda la mancata corrispondenza dello schema per un campo denominato project_ids. A seconda del tipo di mancata corrispondenza dello schema presente, potresti visualizzare una variante diversa del messaggio di errore.

Per risolvere il problema, controlla se le mappature dello schema sono compatibili.

Errore dell'account di servizio

Se non hai configurato l'account di servizio Pub/Sub con le autorizzazioni corrette, il flusso di lavoro di creazione o aggiornamento della sottoscrizione restituisce un errore. Nella console Google Cloud, il messaggio è simile al seguente:

Service account service-1234234234@gcp-sa-pubsub.iam.gserviceaccount.com
is missing permissions required to write to the BigQuery table:
bigquery.tables.get, bigquery.tables.updateData.

Per risolvere il problema, controlla se l'account di servizio dispone delle autorizzazioni corrette.

Lo stato dell'abbonamento mostra un punto esclamativo rosso

Se modifichi la tabella dopo aver creato una sottoscrizione, puoi influire sul modo in cui Pub/Sub scrive i messaggi nella tabella. Se una modifica genera un problema, il campo dello stato della sottoscrizione è impostato su uno stato di errore.

Nella pagina dei dettagli dell'abbonamento, controlla lo stato del campo Subscription state. Il campo Subscription state fornisce un errore più specifico, che potrebbe essere uno dei seguenti:

  • tabella non trovata: la tabella è stata eliminata. Crea una tabella e controllane lo stato. Consulta la sezione Ottenere informazioni sulla tabella.

  • autorizzazione tabella negata: l'account di servizio Pub/Sub non dispone più dell'autorizzazione per scrivere nella tabella. Verifica se l'account di servizio dispone delle autorizzazioni corrette.

  • schema della tabella non corrispondente: lo schema della tabella non è più compatibile con le impostazioni di abbonamento a BigQuery. Controlla se le mappature dello schema sono compatibili.

Quando una sottoscrizione Pub/Sub è in stato di errore, i messaggi non vengono scritti nella tabella BigQuery e rimangono nel backlog della sottoscrizione. Tieni presente che i messaggi non vengono recapitati a un argomento messaggi non recapitabili allegato, se configurato. I messaggi non confermati vengono conservati per il periodo impostato in message_retention_duration(7 giorni, per impostazione predefinita).

Un arretrato si sta accrescendo

Se noti un backlog di messaggi accumulati nella sottoscrizione o di messaggi che rimandano a un argomento messaggi non recapitabili di una sottoscrizione, esamina le possibili cause riportate di seguito.

Messaggio di errore INVALID_ARGUMENT

Questo errore si verifica quando il messaggio fornito è in un formato che Pub/Sub considera valido, ma non lo schema della tabella di destinazione BigQuery. Ciò significa che uno o più campi del messaggio contengono valori non consentiti dallo schema della tabella BigQuery. Esamina la compatibilità dello schema per verificare che i tipi di dati e i formati siano corretti. Tra gli errori più comuni ci sono:

  • Una stringa vuota ("") non è un JSON valido. Quando invii i dati a una colonna della tabella BigQuery JSON con valori null, fornisci un oggetto JSON vuoto ({}), null o una stringa JSON vuota ("\"\"") per rappresentare i valori mancanti. L'invio di una stringa vuota restituisce un errore.

  • Se il valore del campo di un messaggio supera la lunghezza massima del campo BigQuery, il messaggio restituisce un errore a causa di limitazioni di dimensioni.

Per risolvere gli errori INVALID_ARGUMENT, aggiungi un argomento messaggi non recapitabili all'abbonamento di interesse. L'argomento messaggi non recapitabili acquisisce i messaggi che non è stato possibile scrivere in BigQuery, insieme a un attributo chiamato CloudPubSubDeadLetterSourceDeliveryErrorMessage che spiega il motivo dell'errore.

Questi errori di consegna sono visibili anche in Esplora metriche. Seleziona la metrica pubsub.googleapis.com/subscription/push_request_count e filtra per response_code=invalid_argument.

Messaggio di errore RESOURCE_EXHAUSTED

Se i messaggi vengono scritti lentamente in BigQuery, potrebbe essere necessario aumentare la quota di push di Pub/Sub del progetto o la quota di velocità effettiva di scrittura dello spazio di archiviazione BigQuery. Per verificare se sono presenti limitazioni di quota, esamina la metrica Richieste push (subscription/push_request_count) per verificare la presenza di eventuali errori resource_exhausted.

Un altro modo per diagnosticare i problemi di quota è controllare la quota del progetto. Vai a IAM e amministrazione > Quote all'interno del progetto contenente la risorsa Pub/Sub o l'istanza BigQuery. Cerca la quota pertinente, pubsub.googleapis.com/regionalpushsubscriber o bigquerystorage.googleapis.com/write/append_bytes. Se una delle quote richiede un aumento, puoi richiedere una quota più alta.

Tabella partizionata oraria che mostra __UNPARTITIONED__ nella colonna ID partizione

Quando una tabella di destinazione BigQuery viene partizionata per ora, le righe vengono inizialmente inserite in una partizione speciale con l'etichetta __UNPARTITIONED__ all'interno della vista INFORMATION_SCHEMA.PARTITIONS. Questo è il comportamento previsto per le tabelle che utilizzano il partizionamento in fase di importazione.

BigQuery utilizza un buffer dei flussi di dati per ottimizzare il processo di scrittura. I dati potrebbero risiedere nella partizione __UNPARTITIONED__ finché non viene accumulato un volume sufficiente o non è trascorsa almeno un'ora. Quando queste condizioni sono soddisfatte, BigQuery ripartiziona i dati nella partizione oraria appropriata.

Puoi monitorare i dati all'interno della partizione __UNPARTITIONED__ utilizzando la vista INFORMATION_SCHEMA.PARTITIONS.

Passaggi successivi

  • Se continui a riscontrare problemi con l'abbonamento BigQuery, consulta Assistenza.