Risoluzione dei problemi delle sottoscrizioni BigQuery

Questa pagina fornisce alcuni suggerimenti comuni per la risoluzione dei problemi 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 al Pub/Sub pagina di abbonamento.

    Vai agli 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 della pagina per la risoluzione del problema.

Una volta risolto il problema, l'abbonamento torna a un stato di salute.

Impossibile creare o aggiornare l'abbonamento

Di seguito sono riportati alcuni dei problemi comuni che potresti riscontrare la creazione o l'aggiornamento di una sottoscrizione 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 "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 di poter controllare il relativo stato prima di utilizzarlo con una sottoscrizione 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 visualizzi 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 ha le autorizzazioni corrette.

Lo stato dell'abbonamento mostra un punto esclamativo rosso

Se modifichi la tabella dopo aver creato una sottoscrizione, può influire il modo in cui Pub/Sub scrive i messaggi nella tabella. Se una modifica comporta un problema, il campo dello stato della sottoscrizione impostata 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 può essere uno dei seguenti:

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

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

  • schema della tabella non corrispondente: lo schema della tabella non è più compatibile con Impostazioni di abbonamento a BigQuery. Controlla se lo schema che le mappature siano compatibili.

Mentre una sottoscrizione Pub/Sub è in stato di errore, i messaggi non vengono scritti nella tabella BigQuery e rimangono il backlog degli abbonamenti. Tieni presente che i messaggi non vengono recapitati allegato argomento messaggi non recapitabili, 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 che si accumula nella sottoscrizione o nei messaggi andare all'argomento messaggi non recapitabili di una sottoscrizione, esaminare le seguenti possibili cause.

Messaggio di errore INVALID_ARGUMENT

Questo errore si verifica quando il messaggio fornito è in un formato che Pub/Sub viene considerata valida, al contrario dello schema della tabella di destinazione BigQuery. Questo significa che uno o più campi del messaggio contengono valori che non sono consentito dallo schema della tabella BigQuery. Esamina il compatibilità dello schema per verificare che i tipi di dati e i formati siano corretti. Alcuni degli errori più comuni include:

  • Una stringa vuota ("") non è un JSON valido. Quando si inviano dati a un nullable colonna della tabella BigQuery JSON, fornisci un oggetto JSON vuoto ({}), null o una stringa JSON vuota ("\"\"") per rappresentare i valori mancanti. Invio una stringa vuota restituisce un errore.

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

Per risolvere INVALID_ARGUMENT di errori, aggiungi un elemento argomento messaggi non recapitabili agli abbonamento di interesse. L'argomento messaggi non recapitabili acquisisce i messaggi che non è stato possibile da 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, potresti dover aumenta la quota per il push di Pub/Sub o lo spazio di archiviazione di BigQuery del tuo progetto la quota di velocità effettiva di scrittura. Per verificare se riscontri limiti di quota, esamina la metrica Richieste push (subscription/push_request_count) per eventuali errori resource_exhausted.

Un altro modo per diagnosticare i problemi di quota è controllare la quota del progetto. Naviga su IAM e Amministratore > Quote all'interno del progetto contenenti Pub/Sub risorsa o un'istanza BigQuery. Cerca la quota pertinente, pubsub.googleapis.com/regionalpushsubscriber o bigquerystorage.googleapis.com/write/append_bytes. Se una delle quote richiede aumenta, 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, inizialmente si trovano in una partizione speciale con l'etichetta __UNPARTITIONED__ all'interno della INFORMATION_SCHEMA.PARTITIONS visualizzazione. 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 trovarsi nella partizione __UNPARTITIONED__ fino a quando un volume sufficiente si accumula o è trascorsa almeno un'ora. Una volta soddisfatte queste condizioni, BigQuery ripartiziona i dati nella partizione oraria appropriata.

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

Passaggi successivi

  • Se i problemi con BigQuery persistono dell'abbonamento, consulta la pagina Ricevere assistenza.