Risoluzione dei problemi relativi alle sottoscrizioni BigQuery

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, svolgi i passaggi che seguono:

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

    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 uno stato di errore.

  3. Fai clic sull'abbonamento BigQuery.

    Si apre la pagina dei dettagli dell'abbonamento.

  4. Controlla Stato abbonamento per visualizzare il messaggio di errore.

  5. 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 un stato di salute.

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 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 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 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 il service account 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. Ciò significa che uno o più campi del messaggio hanno valori non consentiti 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 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 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 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 lentamente in BigQuery, potresti dover aumenta la quota per i 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. 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 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 è 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 i problemi con BigQuery persistono dell'abbonamento, consulta la pagina Ricevere assistenza.