Auf dieser Seite finden Sie einige häufige Tipps zur Fehlerbehebung bei BigQuery-Abos.
Status eines BigQuery-Abos prüfen
So prüfen Sie den Status eines Abos:
Rufen Sie in der Google Cloud Console die Seite Pub/Sub Abos auf.
Prüfen Sie das Symbol für Status für Ihr BigQuery-Abo.
Wenn das Symbol ein grünes Häkchen ist, ist das Abo fehlerfrei.
Wenn das Symbol ein rotes Ausrufezeichen ist, befindet sich das Abo in einem Fehlerstatus.
Klicken Sie auf das BigQuery-Abo.
Die Abo-Detailseite wird geöffnet.
Prüfen Sie unter Status des Abos die Fehlermeldung.
Je nach Fehlermeldung finden Sie im entsprechenden Abschnitt auf dieser Seite Informationen zur Fehlerbehebung.
Nachdem das Problem behoben wurde, kehrt das Abo schließlich in einen fehlerfreien Status zurück.
Abo kann nicht erstellt oder aktualisiert werden
Dies sind einige der häufigsten Probleme, die auftreten können, wenn Sie ein BigQuery-Abo erstellen oder aktualisieren.
Fehler „Tabelle nicht gefunden“
Wenn die Tabelle, die Sie im Workflow zum Erstellen oder Aktualisieren eines Abos angeben, nicht vorhanden ist, gibt der Workflow einen Fehler „Tabelle nicht gefunden“ zurück. In der Google Cloud Console sieht die Meldung in etwa so aus:
The BigQuery table or dataset specified cannot be found.
Erstellen Sie die Tabelle, um das Problem zu beheben. Prüfen Sie außerdem, ob Sie ihren Status prüfen können, bevor Sie sie mit einem BigQuery-Abo verwenden.
Fehler „Schema stimmt nicht überein“
Wenn die Schemas der Tabelle und des Themas nicht kompatibel sind, gibt der Workflow zum Erstellen oder Aktualisieren eines Abos einen Fehler „Schema stimmt nicht überein“ zurück. In der Google Cloud Console sieht die Meldung in etwa so aus:
Incompatible schema type for field project_ids: expected INT64, got STRING
Die angegebene Fehlermeldung bezieht sich auf eine Schemadiskrepanz für ein Feld namens project_ids.
Je nach Art der Schemadiskrepanz wird möglicherweise eine andere Variante der Fehlermeldung angezeigt.
Prüfen Sie, ob die Schemazuordnungen kompatibel sind, um das Problem zu beheben.
Fehler bei Dienstkontoverwendung
Wenn Sie das Pub/Sub-Dienstkonto nicht mit den richtigen Berechtigungen konfiguriert haben, gibt der Workflow zum Erstellen oder Aktualisieren eines Abos einen Fehler zurück. In der Google Cloud Console sieht die Meldung in etwa so aus:
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.
Prüfen Sie, ob das Dienstkonto die richtigen Berechtigungen hat, um das Problem zu beheben.
Status des Abos zeigt ein rotes Ausrufezeichen
Wenn Sie die Tabelle nach dem Erstellen eines Abos bearbeiten, kann sich das darauf auswirken, wie Pub/Sub Nachrichten in die Tabelle schreibt. Wenn eine Änderung zu einem Problem führt, wird das Feld „Status“ des Abos auf einen Fehlerstatus gesetzt.
Prüfen Sie auf der Seite mit den Abodetails den Status des Felds Subscription state.
Das Feld Subscription state enthält einen genaueren Fehler,
der einer der folgenden sein kann:
Tabelle nicht gefunden: Die Tabelle wurde gelöscht. Erstellen Sie eine Tabelle und prüfen Sie ihren Status. Weitere Informationen zu Tabelleninformationen abrufen.
Zugriff auf Tabelle verweigert: Das Pub/Sub-Dienstkonto hat keine Berechtigung mehr, in die Tabelle zu schreiben. Prüfen Sie, ob das Dienstkonto die richtigen Berechtigungen hat.
Tabellenschema stimmt nicht überein: Das Tabellenschema ist nicht mehr mit den BigQuery-Aboeinstellungen kompatibel. Prüfen Sie, ob die Schema zuordnungen kompatibel sind.
Solange sich ein Pub/Sub-Abo im Fehlerstatus befindet, werden keine Nachrichten in die BigQuery-Tabelle geschrieben und sie verbleiben im Abo-Backlog. Nachrichten werden nicht an ein
angehängtes Thema für unzustellbare Nachrichten gesendet, falls konfiguriert. Nicht bestätigte Nachrichten werden
für den in message_retention_durationfestgelegten Zeitraum aufbewahrt(standardmäßig 7 Tage).
Backlog wird aufgebaut
Wenn sich ein Backlog von Nachrichten im Abo aufbaut oder Nachrichten an das Thema für unzustellbare Nachrichten eines Abos gesendet werden, prüfen Sie die folgenden möglichen Ursachen.
Fehlermeldung „INVALID_ARGUMENT“
Dieser Fehler tritt auf, wenn die bereitgestellte Nachricht in einem Format vorliegt, das Pub/Sub als gültig betrachtet, das BigQuery-Zieltabellenschema jedoch nicht. Das bedeutet, dass ein oder mehrere Felder in der Nachricht Werte enthalten, die vom BigQuery-Tabellenschema nicht zulässig sind. Prüfen Sie die Schemakompatibilität, um sicherzustellen , dass die Datentypen und Formate korrekt sind. Einige der häufigsten Fehler sind:
Ein leerer String (
"") ist kein gültiges JSON. Wenn Sie Daten an eine BigQuery-Tabellenspalte mit Nullwerten senden, geben Sie entweder ein leeres JSON-Objekt({}),null, oder einen leeren JSON-String("\"\"")an, um fehlende Werte darzustellen. Das Senden eines leeren Strings führt zu einem Fehler.Wenn ein Nachrichtenfeldwert die maximale Länge des BigQuery-Felds überschreitet, schlägt die Nachricht aufgrund von Größenbeschränkungen fehl.
Fügen Sie dem entsprechenden Abo ein
Thema für unzustellbare Nachrichten hinzu, um INVALID_ARGUMENT Fehler zu beheben. Im Thema für unzustellbare Nachrichten werden Nachrichten erfasst, die nicht
in BigQuery geschrieben werden konnten, zusammen mit einem Attribut namens
CloudPubSubDeadLetterSourceDeliveryErrorMessage
das den Grund für den Fehler erläutert.
Diese Zustellungsfehler können auch in Metrics Explorer angezeigt werden.
Wählen Sie den Messwert pubsub.googleapis.com/subscription/push_request_count aus und filtern Sie nach response_code=invalid_argument.
Fehlermeldung „RESOURCE_EXHAUSTED“
Wenn Nachrichten langsam in BigQuery geschrieben werden, müssen Sie möglicherweise das Pub/Sub-Push-Kontingent oder das BigQuery-Speicherkontingent für den Schreibdurchsatz Ihres Projekts erhöhen. Prüfen Sie anhand des Messwerts für Push-Anfragen (subscription/push_request_count), ob Kontingentbeschränkungen auftreten,
und suchen Sie nach resource_exhausted Fehlern.
Eine weitere Möglichkeit zur Diagnose von Kontingentproblemen ist die Prüfung des Kontingents des Projekts. Rufen Sie im Projekt mit Ihrer Pub/Sub-Ressource oder BigQuery-Instanz IAM und Verwaltung > Kontingente auf. Suchen Sie nach dem entsprechenden Kontingent, entweder pubsub.googleapis.com/regionalpushsubscriber oder bigquerystorage.googleapis.com/write/append_bytes. Wenn eines der Kontingente erhöht werden muss, können Sie eine
Kontingentanpassung
anfordern.
Stündlich partitionierte Tabelle zeigt __UNPARTITIONED__ in der Spalte „Partitions-ID“
Wenn eine BigQuery-Zieltabelle nach Stunde partitioniert ist, werden Zeilen
zunächst in einer speziellen Partition mit der Bezeichnung __UNPARTITIONED__ in der
INFORMATION_SCHEMA.PARTITIONS Ansicht platziert.
Das ist das erwartete Verhalten für Tabellen, die nach Aufnahmezeit partitioniert sind.
BigQuery verwendet einen Streamingpuffer, um den Schreibvorgang zu optimieren.
Daten können sich in der Partition __UNPARTITIONED__ befinden, bis genügend Daten vorhanden sind oder mindestens eine Stunde vergangen ist. Nachdem diese Bedingungen erfüllt sind, partitioniert BigQuery die Daten neu in die entsprechende stündliche Partition.
Sie können Daten in der Partition __UNPARTITIONED__ mit der Ansicht INFORMATION_SCHEMA.PARTITIONS überwachen.
Nächste Schritte
- Wenn Sie weiterhin Probleme mit Ihrem BigQuery Abo haben, finden Sie weitere Informationen unter Support erhalten.