Questa pagina fornisce alcuni suggerimenti comuni per la risoluzione dei problemi relativi alle sottoscrizioni BigQuery.
Controllare lo stato di una sottoscrizione BigQuery
Per controllare lo stato di una sottoscrizione, svolgi questi passaggi:
Nellaconsole, vai alla pagina Sottoscrizione Pub/Sub. Google Cloud
Controlla l'icona dello Stato della sottoscrizione BigQuery.
Se l'icona è un segno di spunta verde, la sottoscrizione è integra.
Se l'icona è un punto esclamativo rosso, la sottoscrizione è in uno stato di errore.
Fai clic sulla sottoscrizione BigQuery.
Viene visualizzata la pagina dei dettagli della sottoscrizione.
Controlla il messaggio di errore in Stato della sottoscrizione.
A seconda del messaggio di errore, vai alla sezione pertinente di questa pagina per risolvere il problema.
Una volta risolto il problema, la sottoscrizione tornerà a uno stato integro.
Impossibile creare o aggiornare la sottoscrizione
Di seguito sono riportati alcuni dei problemi comuni che potresti riscontrare se hai difficoltà a creare o aggiornare 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. Nellaconsole 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 stato prima di utilizzarla con una sottoscrizione BigQuery.
Errore Schema non corrispondente
Se gli schemi della tabella e dell'argomento non sono compatibili, il flusso di lavoro di creazione o aggiornamento della sottoscrizione restituisce un errore Schema non corrispondente. Nellaconsole 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, potresti visualizzare una variante diversa del messaggio di errore.
Per risolvere il problema, controlla se i mapping degli schemi sono compatibili.
Errore del service account
Se non hai configurato il account di servizio Pub/Sub con le autorizzazioni corrette, il flusso di lavoro di creazione o aggiornamento della sottoscrizione restituisce un errore. Nellaconsole 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 il account di servizio dispone delle autorizzazioni corrette.
Lo stato della sottoscrizione 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 comporta un problema, il campo dello stato della sottoscrizione viene impostato su uno stato di errore.
Nella pagina dei dettagli della sottoscrizione, controlla lo stato del campo Subscription state.
Il campo Subscription state fornisce un errore più specifico, che può essere uno dei seguenti:
table not found: la tabella è stata eliminata. Crea una tabella e controllane lo stato. Consulta Recuperare informazioni sulla tabella.
table permission denied: il account di servizio Pub/Sub non ha più l'autorizzazione per scrivere nella tabella. Controlla se il account di servizio dispone delle autorizzazioni corrette.
mancata corrispondenza schema tabella: lo schema della tabella non è più compatibile con le impostazioni della sottoscrizione BigQuery. Controlla se i mapping degli schemi sono compatibili.
Mentre una sottoscrizione Pub/Sub è nello 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 collegato, se configurato. I messaggi non riconosciuti vengono conservati
per il periodo impostato in message_retention_duration(7 giorni per impostazione predefinita).
Si sta accumulando un backlog
Se noti un backlog di messaggi che si accumulano nella sottoscrizione o messaggi che vanno all'argomento messaggi non recapitabili di una sottoscrizione, esamina le seguenti possibili cause.
Messaggio di errore INVALID_ARGUMENT
Questo errore si verifica quando il messaggio fornito è in un formato che Pub/Sub considera valido, ma lo schema della tabella di destinazione BigQuery no. Ciò significa che uno o più campi del messaggio hanno valori non consentiti dallo schema della tabella BigQuery. Esamina la compatibilità dello schema per verificare che i tipi e i formati dei dati siano corretti. Alcuni degli errori più comuni includono:
Una stringa vuota (
"") non è un JSON valido. Quando invii dati a una colonna della tabella BigQuery JSON con valori nulli, fornisci un oggetto JSON vuoto({}),null, o una stringa JSON vuota("\"\"")per rappresentare i valori mancanti. L'invio di una stringa vuota genera un errore.Se il valore di un campo del messaggio supera la lunghezza massima del campo BigQuery, il messaggio non viene inviato a causa delle limitazioni di dimensione.
Per risolvere i problemi relativi agli errori INVALID_ARGUMENT, aggiungi un
argomento messaggi non recapitabili alla
sottoscrizione di interesse. L'argomento messaggi non recapitabili acquisisce i messaggi che non è stato possibile scrivere in BigQuery, insieme a un attributo denominato
CloudPubSubDeadLetterSourceDeliveryErrorMessage
che spiega il motivo dell'errore.
Questi errori di recapito possono essere visualizzati 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 in BigQuery lentamente, potresti dover aumentare la quota di push Pub/Sub del tuo progetto o la quota di throughput di scrittura dell'archiviazione BigQuery. Per verificare se stai riscontrando limitazioni di quota,
esamina la metrica delle richieste push (subscription/push_request_count)
per eventuali resource_exhausted errori.
Un altro modo per diagnosticare i problemi relativi alle quote è 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 è necessario aumentare una delle due quote, puoi
richiedere un aggiustamento della quota.
Tabella partizionata per ora che mostra __UNPARTITIONED__ nella colonna dell'ID partizione
Quando una tabella di destinazione BigQuery viene partizionata per ora, le righe
inizialmente vengono inserite in una partizione speciale etichettata __UNPARTITIONED__ all'interno della
INFORMATION_SCHEMA.PARTITIONS vista.
Questo è il comportamento previsto per le tabelle che utilizzano il partizionamento per data di importazione .
BigQuery utilizza un buffer di streaming per ottimizzare il processo di scrittura.
I dati potrebbero risiedere nella partizione __UNPARTITIONED__ finché non si accumula un volume sufficiente o non è 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 la vista INFORMATION_SCHEMA.PARTITIONS.
Passaggi successivi
- Se continui ad avere problemi con la sottoscrizione BigQuery, consulta Richiedere assistenza.