Questa pagina fornisce alcuni suggerimenti comuni per la risoluzione dei problemi relativi alle sottoscrizioni BigQuery.
Controllare lo stato di una sottoscrizione BigQuery
Per verificare lo stato di un abbonamento:
Nella console Google Cloud, vai alla pagina dell'abbonamento Pub/Sub.
Controlla l'icona 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 uno stato di errore.
Fai clic sull'abbonamento BigQuery.
Si apre la pagina dei dettagli dell'abbonamento.
Controlla Stato abbonamento per visualizzare il messaggio di errore.
A seconda del messaggio di errore, vai alla sezione pertinente di questa pagina per risolvere il problema.
Una volta risolto il problema, l'abbonamento torna a essere in stato corretto.
Impossibile creare o aggiornare l'abbonamento
Di seguito sono riportati alcuni dei problemi comuni che potresti riscontrare se hai difficoltà a creare o aggiornare un abbonamento BigQuery.
Errore di tabella non trovata
Se la tabella specificata nel flusso di lavoro di creazione o aggiornamento dell'abbonamento 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 poter controllare il relativo stato prima di utilizzarla con un abbonamento BigQuery.
Errore di mancata corrispondenza dello schema
Se gli schemi della tabella e dell'argomento non sono compatibili, il flusso di lavoro di creazione o aggiornamento dell'abbonamento 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, potresti vedere 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 il 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 un abbonamento, ciò può influire sul modo in cui Pub/Sub scrive i messaggi nella tabella. Se una modifica comporta un problema, il campo dello stato dell'abbonamento viene 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 può essere uno dei seguenti:
table not found: la tabella è stata eliminata. Crea una tabella e controlla il relativo stato. Leggi la sezione Ottenere informazioni sulle tabelle.
Autorizzazione tabella negata: l'account di servizio Pub/Sub non ha più l'autorizzazione per scrivere nella tabella. Controlla se l'account di servizio dispone delle autorizzazioni corrette.
Schema di tabella non corrispondente: lo schema della tabella non è più compatibile con le impostazioni di sottoscrizione di 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 in un
argomento messaggi non recapitabili collegato, se configurato. I messaggi non confermati vengono conservati per il periodo impostato in message_retention_duration
(7 giorni per impostazione predefinita).
Si sta accumulando una serie di richieste in attesa
Se noti un accumulo di messaggi 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 considerato valido da Pub/Sub, ma non dallo schema della tabella di destinazione BigQuery. 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 di dati siano corretti. Ecco alcuni degli errori più comuni:
Una stringa vuota (
""
) non è un JSON valido. Quando invii 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 genera un errore.Se il valore di un campo del messaggio supera la lunghezza massima del campo BigQuery, il messaggio non va a buon fine a causa delle limitazioni di dimensioni.
Per risolvere i problemi relativi agli 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 importazione possono essere visualizzati anche in Esplora metriche.
Seleziona la metrica pubsub.googleapis.com/subscription/push_request_count
e
filtra in base a response_code=invalid_argument
.
Messaggio di errore RESOURCE_EXHAUSTED
Se i messaggi vengono scritti in BigQuery lentamente, potrebbe essere necessario
aumentare la quota push Pub/Sub o la quota di throughput di scrittura dello spazio di archiviazione BigQuery del progetto. Per verificare se stai riscontrando limitazioni di quota, esamina la metrica delle richieste push (subscription/push_request_count
) per verificare la presenza di errori resource_exhausted
.
Un altro modo per diagnosticare i problemi relativi alla quota è controllare la quota del progetto. Vai a IAM e amministratore > Quote nel 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 deve essere aumentata, puoi richiedere una quota più alta.
Tabella partizionata per ora che mostra __UNPARTITIONED__
nella colonna ID partizione
Quando una tabella di destinazione BigQuery è partizionata per ora, le righe vengono inizialmente inserite in una partizione speciale etichettata come __UNPARTITIONED__
all'interno della visualizzazione INFORMATION_SCHEMA.PARTITIONS
.
Questo è un comportamento previsto per le tabelle che utilizzano la partizione 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 l'abbonamento a BigQuery, consulta Ricevere assistenza.