Fehlerbehebung bei BigQuery-Abos

Auf dieser Seite finden Sie einige allgemeine Tipps zur Fehlerbehebung bei BigQuery-Abos.

Status eines BigQuery-Abos prüfen

So prüfen Sie den Status eines Abos:

  1. Rufen Sie in der Google Cloud Console die Seite „Pub/Sub-Abo“ auf.

    Zu „Abos“

  2. Klicken Sie auf 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, hat das Abo einen Fehlerstatus.

  3. Klicken Sie auf das BigQuery-Abo.

    Die Seite mit den Abodetails wird geöffnet.

  4. Prüfen Sie den Abostatus auf die Fehlermeldung.

  5. Rufen Sie je nach Fehlermeldung den entsprechenden Abschnitt auf dieser Seite zur Fehlerbehebung auf.

Nachdem das Problem behoben wurde, kehrt das Abo in einen fehlerfreien Zustand zurück.

Abo kann nicht erstellt oder aktualisiert werden

Dies sind einige der häufigsten Probleme, die beim Erstellen oder Aktualisieren eines BigQuery-Abos auftreten können.

Fehler „Tabelle nicht gefunden“

Wenn die Tabelle, die Sie im Workflow zum Erstellen oder Aktualisieren von Abos angeben, nicht vorhanden ist, gibt der Workflow den 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.

Um das Problem zu beheben, erstellen Sie die Tabelle und prüfen Sie ihren state, bevor Sie sie mit einem BigQuery-Abo verwenden.

Fehler bei nicht übereinstimmendem Schema

Wenn die Schemas der Tabelle und des Themas nicht kompatibel sind, gibt der Workflow zum Erstellen oder Aktualisieren von Abos einen Schemakonfliktfehler 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 einen Schemakonflikt für ein Feld namens project_ids. Je nach Art des nicht übereinstimmenden Schemas sehen Sie möglicherweise eine andere Variante der Fehlermeldung.

Prüfen Sie, ob die Schemazuordnungen kompatibel sind, um das Problem zu beheben.

Dienstkontofehler

Wenn Sie das Pub/Sub-Dienstkonto nicht mit den richtigen Berechtigungen konfiguriert haben, gibt der Workflow zum Erstellen oder Aktualisieren von 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.

Der Abostatus zeigt ein rotes Ausrufezeichen

Wenn Sie die Tabelle nach dem Erstellen eines Abos bearbeiten, kann sich dies darauf auswirken, wie Pub/Sub Nachrichten in die Tabelle schreibt. Wenn eine Änderung zu einem Problem führt, wird das Statusfeld 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 gibt einen spezifischeren Fehler zurück. Dabei kann es sich um einen der folgenden Fehler handeln:

  • table not found: Die Tabelle wurde gelöscht. Erstellen Sie eine Tabelle und prüfen Sie den Status der Tabelle. Siehe Tabelleninformationen abrufen.

  • table Berechtigung verweigert: Das Pub/Sub-Dienstkonto ist nicht mehr zum Schreiben in die Tabelle berechtigt. 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 Schemazuordnungen kompatibel sind.

Solange sich ein Pub/Sub-Abo im Fehlerstatus befindet, werden keine Nachrichten in die BigQuery-Tabelle geschrieben und verbleiben im Rückstand des Abos. Beachten Sie, dass Nachrichten nicht an ein angehängtes Thema für unzustellbare Nachrichten zugestellt werden, falls konfiguriert. Nicht bestätigte Nachrichten werden für den in message_retention_duration festgelegten Zeitraum aufbewahrt(standardmäßig 7 Tage).

Ein Backlog baut sich auf

Wenn Sie im Abo einen Rückstand von Nachrichten oder Nachrichten zum Thema für unzustellbare Nachrichten eines Abos sehen, prüfen Sie die folgenden möglichen Ursachen.

Fehlermeldung INVALID_ARGUMENT

Dieser Fehler tritt auf, wenn die bereitgestellte Nachricht in einem Format vorliegt, das von Pub/Sub als gültig betrachtet wird, das BigQuery-Zieltabellenschema jedoch nicht. Dies bedeutet, dass mindestens ein Feld in der Nachricht Werte enthält, die gemäß dem BigQuery-Tabellenschema nicht zulässig sind. Sehen Sie sich die Schemakompatibilität an, um sicherzustellen, dass die Datentypen und -formate korrekt sind. Zu den häufigsten Fehlern gehören:

  • Ein leerer String ("") ist kein gültiges JSON-Format. Geben Sie beim Senden von Daten an eine JSON-BigQuery-Tabellenspalte, für die Nullwerte zulässig sind, 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.

Wenn du INVALID_ARGUMENT-Fehler beheben möchtest, füge dem entsprechenden Abo ein Thema für unzustellbare Nachrichten hinzu. Im Thema für unzustellbare Nachrichten werden Nachrichten erfasst, die nicht in BigQuery geschrieben werden konnten, zusammen mit einem Attribut namens CloudPubSubDeadLetterSourceDeliveryErrorMessage, das die Fehlerursache erklärt.

Diese Auslieferungsfehler können auch im 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 Ihres Projekts oder das Durchsatzkontingent für Schreibvorgänge im BigQuery-Speicher erhöhen. Prüfen Sie den Messwert für Push-Anfragen (subscription/push_request_count) auf resource_exhausted-Fehler, um zu ermitteln, ob Kontingentbeschränkungen vorliegen.

Eine andere Möglichkeit zur Diagnose von Kontingentproblemen besteht darin, das Kontingent des Projekts zu prüfen. Rufen Sie in dem Projekt, das Ihre Pub/Sub-Ressource oder BigQuery-Instanz enthält, auf IAM & Verwaltung > Kontingente auf. Suchen Sie nach dem entsprechenden Kontingent, entweder pubsub.googleapis.com/regionalpushsubscriber oder bigquerystorage.googleapis.com/write/append_bytes. Falls eines der Kontingente erhöht werden muss, können Sie ein höheres Kontingent anfordern.

Stündlich partitionierte Tabelle mit __UNPARTITIONED__ in Spalte für Partitions-ID

Wenn eine BigQuery-Zieltabelle nach Stunden partitioniert ist, landen Zeilen anfangs in einer speziellen Partition mit dem Namen __UNPARTITIONED__ in der Ansicht INFORMATION_SCHEMA.PARTITIONS. Dies ist das erwartete Verhalten für Tabellen mit Aufnahmezeitpartitionierung.

BigQuery verwendet einen Streaming-Zwischenspeicher, um den Schreibvorgang zu optimieren. Daten können sich in der Partition __UNPARTITIONED__ befinden, bis genügend Volumen angesammelt wurde oder mindestens eine Stunde vergangen ist. Wenn diese Bedingungen erfüllt sind, partitioniert BigQuery die Daten neu in die entsprechende stündliche Partition.

Sie können Daten innerhalb der Partition __UNPARTITIONED__ mit der Ansicht INFORMATION_SCHEMA.PARTITIONS überwachen.

Nächste Schritte

  • Wenn weiterhin Probleme mit Ihrem BigQuery-Abo auftreten, lesen Sie die Informationen unter Support.