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.
Die Kanalverlaufsansicht: Ansicht SNOWPIPE_STREAMING_CHANNEL_HISTORY liefert eine historische Aufzeichnung der Kanalaktivität, um Fehler zu überwachen und zu lokalisieren. Mit diesem Feature können Sie Fehlertrends verfolgen und mögliche Probleme proaktiv angehen.
Details zum Kanalstatus-Endpunkt¶
Die leistungsstarke Architektur umfasst einen Kanalstatus-Endpunkt, um detailliertere, zeitpunktbezogene Informationen zu einem Kanal bereitzustellen.
Zusätzlich zu den Kanalstatusinformationen für die klassische Architektur, die statusCode, persistedOffsetToken lautet, enthält die leistungsstarke Architektur die folgenden Informationen:
channel_status_code: Stellt den aktuellen Betriebsstatus des Streaming-Kanals dar. Dieser Code liefert einen umfassenden Hinweis auf den Zustand des Kanals und seine Fähigkeit, Daten zu erfassen. Weitere Informationen zu den Kanalstatuscodes finden Sie unter 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: Der Zeitstempel in Millisekunden, der angibt, wann der Streaming-Kanal ursprünglich in Snowflake erstellt wurde.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.
Fehlererfassung: Snowflake zeichnet detaillierte Informationen zu dem zuletzt aufgetretenen Fehler auf, einschließlich der folgenden Informationen:
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 liefert eine historische Aufzeichnung der Fehler und deren Offsets.
Clientaktion: Die Clientanwendung verwendet die Fehlerinformationen, um die folgenden Aktionen auszuführen:
Die Ursache des Fehlers zu ermitteln.
Implementieren einer geeigneten Fehlerbehandlungslogik, z. B. die folgenden Aktionen:
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. |
Kanal erneut öffnen. |
ERR_CHANNEL_HAS_INVALID_CLIENT_SEQUENCER |
Der Sequenzierungsstatus des Kanals ist ungültig. |
Kanal erneut öffnen. |
ERR_CHANNEL_MUST_BE_REOPENED |
Ein allgemeiner Fehler, der besagt, dass der Kanal nicht verwendbar ist. |
Kanal erneut öffnen. |
ERR_CHANNEL_MUST_BE_REOPENED_DUE_TO_ROW_SEQ_GAP |
Es wurde eine Lücke in der Zeilensequenz erkannt. |
Kanal erneut öffnen. |