Fehlerbehandlung in leistungsstarkem Snowpipe-Streaming

In diesem Thema werden die Mechanismen zur Fehlerbehandlung beschrieben, die in der leistungsstarken Edition von Snowpipe Streaming verfügbar sind. Dieser erweiterte Ansatz liefert detaillierte Fehlerinformationen und verbessert den gesamten Prozess der Fehlerbehandlung für eine robustere und informativere Erfahrung.

Wichtige Features zur Fehlerbehandlung in der High-Performance-Architektur

  • Erweiterter Endpunkt für den Kanalstatus: Diese Edition erweitert den Kanalstatus-Endpunkt, um umfassendere Fehlerinformationen zu liefern.

  • Detaillierte Fehlerdetails: Die leistungsstarke Edition bietet detailliertere Fehlerinformationen, die Ihnen helfen, den Fehler zu identifizieren und die Ursachen für Aufnahmepobleme zu finden.

  • Verbesserte Client-Erfahrung: Die leistungsstarke Edition vereinfacht die Fehlerbehandlung für Clients, indem sie die Komplexität der Fehlersuche und -behebung reduziert.

  • The channel history view: Ansicht SNOWPIPE_STREAMING_CHANNEL_HISTORY provides a historical record of channel activity to monitor and locate errors. This feature enables you to track error trends and proactively address potential issues.

Details zum Kanalstatus-Endpunkt

The high-performance architecture includes a channel status endpoint to provide more detailed, point-in-time information about a channel.

In addition to the channel status information for the classic architecture, which is statusCode, persistedOffsetToken, the high-performance architecture includes the following information:

  • channel_status_code: Represents the current operational status of the streaming channel. This code provides a high-level indication of the channel’s health and ability to ingest data. For more information about the channel status codes, see Clientseitige Fehlerbehandlung und erforderliche Aktionen.

  • last_commited_offset_token: Zeigt das Offset-Token des letzten Zeilensatzes an, der von Snowflake erfolgreich in die Zieltabelle übertragen wurde. Dies ist entscheidend für die Verfolgung des Fortschritts und die Sicherstellung der Datenlieferung.

  • created_on_ms: The timestamp, in milliseconds, that indicates when the streaming channel was initially created within Snowflake.

  • database_name: Der Name der Datenbank, in die der Streaming-Kanal für den Dateninput konfiguriert ist.

  • schema_name: Der Name des Schemas innerhalb der angegebenen Datenbank, in dem sich die Zieltabelle für den Streaming-Kanal befindet.

  • pipe_name: Der Name des Snowpipe-Objekts, das so konfiguriert ist, dass es diesen Snowpipe Streaming-Kanal für die Aufnahme von Daten in eine bestimmte Zieltabelle verwendet.

  • channel_name: Ein vom Benutzer erstellter Name für die spezifische Snowpipe Streaming-Kanalinstanz.

  • rows_inserted: Eine Zählung der Gesamtzahl der Datenzeilen, die seit der Erstellung des Streaming-Kanals erfolgreich über diesen Kanal in die Zieltabelle eingefügt wurden.

  • rows_parsed: Eine Zählung der Gesamtzahl der Datenzeilen, die vom Snowpipe Streaming-Service für diesen Kanal verarbeitet und geparst wurden (aber nicht unbedingt eingefügt wurden, z. B. aufgrund von Fehlern).

  • rows_error_count: Eine Zählung der Gesamtzahl der Datenzeilen, die während der Verarbeitung auf Fehler gestoßen sind und daher vom Snowpipe Streaming-Service für diesen Kanal zurückgewiesen wurden.

  • last_error_offset_upper_bound: Die obere Grenze des Offset-Token-Bereichs des letzten Rowsets, das Fehler enthielt. Dies hilft dabei, die ungefähre Position der letzten Fehler innerhalb des Datenstroms zu identifizieren.

  • last_error_message: Eine von Menschen lesbare Nachricht, die dem letzten Fehlercode entspricht.

  • last_error_timestamp: Der Zeitstempel, der angibt, wann der letzte Fehler auf diesem Streaming-Kanal aufgetreten ist.

  • snowflake_avg_processing_latency_ms: Die durchschnittliche Latenzzeit in Millisekunden, die der Snowflake Service bei der Verarbeitung der über diesen Kanal empfangenen Rowsets beobachtet. Diese Metrik gibt Aufschluss über die Leistung der Aufnahme-Pipeline in Snowflake.

Ablauf der Fehlerbehandlung in der High-Performance-Architektur

  • Der Client sendet Daten: Die Client-Anwendung verwendet das Snowpipe Streaming-SDK, um Daten über die appendRow(s) API an Snowflake zu senden.

  • Server-Verarbeitung: Der Snowflake Service verarbeitet die Daten. Dies beinhaltet:

    • Pufferung der Daten.

    • Parsing und Validierung der Daten.

    • Übertragung der Daten in die Tabelle.

  • Fehlererkennung: Fehler können in jedem der serverseitigen Stagingbereiche auftreten.

  • Error recording: Snowflake records detailed information about the last occurred error, including the following information:

    • Die obere Grenze des Offset-Token-Bereichs des letzten Rowsets, das Fehler enthielt. Dies hilft dabei, die ungefähre Position der letzten Fehler innerhalb des Datenstroms zu identifizieren.

    • Eine Fehlermeldung.

    • Ein Zeitstempel.

  • Fehlerbericht:

    • Der erweiterte Endpunkt für den Kanalstatus bietet Zugriff auf die aufgezeichneten Fehlerinformationen.

    • Clients können diesen Endpunkt abfragen, um die letzten aufgetretenen Fehlerdetails abzurufen.

    • Ansicht SNOWPIPE_STREAMING_CHANNEL_HISTORY provides a historical record of errors and their offsets.

  • Client action: The client application uses the error information to perform the following actions:

    • Die Ursache des Fehlers zu ermitteln.

    • Implement appropriate error handling logic, such as the following actions:

      • Wiederholung des fehlgeschlagenen Vorgangs.

      • Protokollierung des Fehlers.

      • Benachrichtigung eines Administrators.

      • Verschiebung der fehlerhaften Daten in eine Dead-Letter-Queue.

      • Wiedereröffnung der Kanäle.

Clientseitige Fehlerbehandlung und erforderliche Aktionen

Snowpipe Streaming SDK vereinfacht die Fehlerbehandlung durch die Implementierung einer internen Wiederholungslogik für transiente Fehler. Bei schwerwiegenden Kanalfehlern und anhaltenden Autorisierungsproblemen müssen Sie jedoch manuelle Maßnahmen ergreifen.

SDK-Wiederholungslogik für transiente Fehler

Das SDK versucht automatisch erneut die Anforderung, um nicht geleerte Daten im Kanal an den Server für die folgenden HTTP-Statuscodes zu senden, da sie normalerweise auf ein vorübergehendes Serviceproblem hinweisen:

  • 5XX (Serverfehler)

  • 429 (Zu viele Anforderungen).

  • 408 (Timeout der Anforderung)

Kanalfehler, die ein manuelles erneutes Öffnen erfordern

Snowpipe Streaming SDK öffnet den Kanal nicht automatisch wieder. Wenn ein Kanal in einen ungültigen Zustand übergeht, muss der Kunde den Kanal explizit schließen und wieder öffnen, um die Datenaufnahme fortzusetzen.

Ein Kanal gilt als nicht gültig und erfordert eine Clientaktion, wenn der Kanalstatuscode in der Kanalstatusantwort etwas anderes ist als SUCCESS.

Die folgende Tabelle zeigt persistente Fehlercodes, die auf einen fatalen Kanalzustand hinweisen und ein erneutes Öffnen des Kanals erfordern:

Fehlercode

Kontext

Erforderliche Clientaktion

ERR_PIPE_DOES_NOT_EXIST_OR_NOT_AUTHORIZED

Die Zielpipe fehlt oder ist nicht zugänglich.

Problem mit Pipe beheben. Kanal erneut öffnen.

ERR_TABLE_DOES_NOT_EXIST_NOT_AUTHORIZED

Die Zieltabelle fehlt oder ist nicht zugänglich.

Tabellenproblem beheben. Kanal erneut öffnen.

ERR_CHANNEL_HAS_INVALID_ROW_SEQUENCER

Der Sequenzierungsstatus der Zeilen ist ungültig.

Reopen channel.

ERR_CHANNEL_HAS_INVALID_CLIENT_SEQUENCER

Der Sequenzierungsstatus des Kanals ist ungültig.

Reopen channel.

ERR_CHANNEL_MUST_BE_REOPENED

Ein allgemeiner Fehler, der besagt, dass der Kanal nicht verwendbar ist.

Reopen channel.

ERR_CHANNEL_MUST_BE_REOPENED_DUE_TO_ROW_SEQ_GAP

Es wurde eine Lücke in der Zeilensequenz erkannt.

Reopen channel.

Autorisierungsfehler, die eine Korrektur der Konfiguration erfordern

Wenn ein Datenaufnahmeversuch zu einem HTTP-Autorisierungsfehler führt, muss der Kunde das zugrunde liegende Problem mit der Berechtigung oder den Anmeldeinformationen korrigieren. Öffnen Sie den Kanal bei diesen Fehlern nicht wieder, da der neue Kanal sofort das gleiche Problem haben wird.

  • 401 (Nicht autorisiert)

  • 403 (Unzulässig)

Bei diesen Fehlern sollte die Datenaufnahme gestoppt werden, und die Sicherheitskonfiguration der Clientanwendung – z. B. Pipe-Berechtigungen, Benutzerrolle, Authentifizierungsdaten – korrigiert werden, bevor die Datenaufnahme fortgesetzt werden kann. Nachdem Sie das Autorisierungsproblem behoben haben, können Sie den Client erneut öffnen, um die Aufnahme fortzusetzen.