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 Pub/Sub-Aboseite auf.

    Zu den Abos

  2. Überprüfen Sie das Symbol für Status Ihres BigQuery-Abos.

    Wenn das Symbol ein grünes Häkchen ist, ist das Abo fehlerfrei.

    Wenn das Symbol ein rotes Ausrufezeichen ist, wird für das Abo ein Fehler angezeigt.

  3. Klicken Sie auf das BigQuery-Abo.

    Die Seite mit den Abodetails wird geöffnet.

  4. Suchen Sie im Abostatus nach der Fehlermeldung.

  5. Informationen zur Fehlerbehebung finden Sie je nach Fehlermeldung im entsprechenden Abschnitt auf dieser Seite.

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

Abo kann nicht erstellt oder aktualisiert werden

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

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.

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

Fehler aufgrund von nicht übereinstimmendem Schema

Wenn die Schemas der Tabelle und des Themas nicht kompatibel sind, gibt der Workflow zum Erstellen oder Aktualisieren von Abos einen Fehler aufgrund des Schemakonflikts 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 Schemaabweichungen für ein Feld namens project_ids. Je nach Art des Schemakonflikts kann eine andere Variante der Fehlermeldung angezeigt werden.

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 enthält einen spezifischeren Fehler, z. B. einen der folgenden:

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

  • Tabellenberechtigung verweigert: Das Pub/Sub-Dienstkonto hat keine Berechtigung mehr zum Schreiben in die Tabelle. 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 ein Pub/Sub-Abo den Fehlerstatus hat, werden Nachrichten nicht 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, sofern dies konfiguriert ist. Nicht bestätigte Nachrichten werden für den in message_retention_duration festgelegten Zeitraum aufbewahrt(standardmäßig 7 Tage).

Es baut sich ein Backlog auf

Wenn Sie einen Rückstand von Nachrichten im Abo 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 ein Format hat, das Pub/Sub als gültig betrachtet, das Schema der BigQuery-Zieltabelle jedoch nicht. Das bedeutet, dass ein oder mehrere Felder in der Nachricht Werte haben, die vom BigQuery-Tabellenschema nicht zulässig sind. Prüfen Sie anhand der Schemakompatibilität, ob 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 der Wert eines Nachrichtenfelds die maximale Länge des BigQuery-Felds überschreitet, schlägt die Nachricht aufgrund von Größenbeschränkungen fehl.

Um INVALID_ARGUMENT-Fehler zu beheben, fügen Sie dem gewünschten 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 erläutert.

Diese Übermittlungsfehler werden auch im Metrics Explorer angezeigt. 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 Schreibdurchsatzkontingent für BigQuery-Speicher erhöhen. Prüfen Sie den Messwert für Push-Anfragen (subscription/push_request_count) auf resource_exhausted-Fehler, um zu prüfen, ob Kontingentbeschränkungen auftreten.

Eine weitere Möglichkeit zur Diagnose von Kontingentproblemen besteht darin, das Kontingent des Projekts zu prüfen. Rufen Sie im Projekt, das Ihre Pub/Sub-Ressource oder BigQuery-Instanz enthält, 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 ein höheres Kontingent anfordern.

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

Wenn eine BigQuery-Zieltabelle nach Stunde partitioniert ist, landen die Zeilen zuerst in einer speziellen Partition namens __UNPARTITIONED__ in der Ansicht INFORMATION_SCHEMA.PARTITIONS. Dies ist das erwartete Verhalten bei Tabellen, die die Partitionierung nach Aufnahmezeit verwenden.

BigQuery verwendet einen Streaming-Zwischenspeicher, um den Schreibvorgang zu optimieren. Daten können sich in der Partition __UNPARTITIONED__ befinden, bis genügend Volumes vorhanden sind 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 in der Partition __UNPARTITIONED__ mit der Ansicht INFORMATION_SCHEMA.PARTITIONS überwachen.

Nächste Schritte

  • Wenn weiterhin Probleme mit Ihrem BigQuery-Abo auftreten, lesen Sie den Abschnitt Support erhalten.