Aktivieren von Snowpipe-Fehlerbenachrichtigungen für Google Pub/Sub

Unter diesem Thema wird eine Anleitung für das Übertragen von Snowpipe-Fehlerbenachrichtigungen an den Google Cloud Pub/Sub (Pub/Sub)-Dienst bereitgestellt.

Mit dieser Funktion können Fehlerbenachrichtigungen für die folgenden Typen von Workloads ausgegeben werden:

  • Automatische Erfassung mit Snowpipe.

  • Aufrufe des Snowpipe-REST-API-Endpunkts für insertFiles.

  • Workload von Apache Kafka unter Verwendung des Snowflake-Konnektors für Kafka nur mit der Snowpipe-Erfassungsmethode.

Unter diesem Thema:

Unterstützung von Cloudplattformen

Dieses Feature ist derzeit auf Snowflake-Konten beschränkt, die auf Google Cloud Platform (GCP) gehostet werden. Snowpipe kann zwar Daten aus Dateien in jedem unterstützten Cloudspeicherdienst laden, Push-Benachrichtigungen an Pub/Sub werden jedoch nur bei Snowflake-Konten unterstützt, die auf GCP gehostet werden.

Anmerkungen

  • Snowflake garantiert eine mindestens einmalige Zustellung von Fehlerbenachrichtigungen (d. h. es werden mehrere Versuche unternommen, um sicherzustellen, dass mindestens ein Versuch erfolgreich ist, was zu doppelten Meldungen führen kann).

  • Dieses Feature wird mithilfe des Benachrichtigungsintegrationsobjekts implementiert. Eine Benachrichtigungsintegration ist ein Snowflake-Objekt, das als Schnittstelle zwischen Snowflake und Cloud-Meldungswarteschlangendiensten von Drittanbietern dient. Eine einzelne Benachrichtigungsintegration kann mehrere Pipes unterstützen.

Aktivieren von Fehlerbenachrichtigungen

Erstellen der Benachrichtigungsintegration

Siehe Erstellen einer Benachrichtigungsintegration zum Senden von Benachrichtigungen an ein Google Cloud Pub/Sub-Thema.

Aktivieren von Fehlerbenachrichtigungen in Pipes

Eine einzelne Benachrichtigungsintegration kann von mehreren Pipes gemeinsam genutzt werden. Im Hauptteil der Fehlermeldung werden unter anderem die Pipe, der externe Stagingbereich mit seinem Pfad sowie die Datei, in der der Fehler aufgetreten ist, angegeben.

Um Fehlerbenachrichtigungen für eine Pipe zu aktivieren, geben Sie einen ERROR_INTEGRATION-Parameterwert an.

Bemerkung

Zum Erstellen oder Ändern einer Pipe, die auf eine Benachrichtigungsintegration verweist, ist eine Rolle erforderlich, die über die Berechtigung USAGE für die Benachrichtigungsintegration verfügt. Außerdem muss die Rolle entweder die CREATE PIPE-Berechtigung für das Schema oder die OWNERSHIP-Berechtigung für die Pipe haben.

Beachten Sie, dass für die Bearbeitung eines Objekts in einem Schema auch die Berechtigung USAGE für die übergeordnete Datenbank und das Schema erforderlich ist.

Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.

Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.

Neue Pipe

Erstellen Sie eine neue Pipe mit CREATE PIPE.

CREATE PIPE <name>
  AUTO_INGEST = TRUE
  [ INTEGRATION = '<string>' ]
  ERROR_INTEGRATION = <integration_name>
  AS <copy_statement>
Copy

Wobei:

ERROR_INTEGRATION = <Name_der_Integration>

Name der Benachrichtigungsintegration, die Sie unter Erstellen Sie eine Benachrichtigungsintegration in Snowflake. erstellt haben.

Beispiel:

CREATE PIPE mypipe
  AUTO_INGEST = TRUE
  INTEGRATION = 'my_storage_int'
  ERROR_INTEGRATION = my_notification_int
  AS
  COPY INTO mydb.public.mytable
  FROM @mydb.public.mystage;
Copy

Vorhandene Pipe

Ändern Sie eine vorhandene Pipe mit ALTER PIPE.

Bemerkung

Wenn beim Erstellen der Pipe eine Benachrichtigungsintegration angegeben wurde, ist es notwendig, zuerst den ERROR_INTEGRATION Parameter zu deaktivieren (mit ALTER PIPE … UNSET ERROR_INTEGRATION) und dann den Parameter festzulegen.

ALTER PIPE <name> SET ERROR_INTEGRATION = <integration_name>;
Copy

Wobei <Name_der_Integration> ist der Name der Benachrichtigungsintegration, die Sie unter Erstellen Sie eine Benachrichtigungsintegration in Snowflake. erstellt haben.

Beispiel:

ALTER PIPE mypipe SET ERROR_INTEGRATION = my_notification_int;
Copy

Meldungsnutzlast von Fehlerbenachrichtigungen

Im Hauptteil der Fehlermeldungen werden die Pipe und die während des Ladevorgangs aufgetretenen Fehler angegeben.

Nachfolgend finden Sie ein Beispiel für eine Meldungsnutzlast, die einen Snowpipe-Fehler beschreibt. Die Nutzlast kann eine oder mehrere Fehlermeldungen enthalten.

{\"version\":\"1.0\",\"messageId\":\"a62e34bc-6141-4e95-92d8-f04fe43b43f5\",\"messageType\":\"INGEST_FAILED_FILE\",\"timestamp\":\"2021-10-22T19:15:29.471Z\",\"accountName\":\"MYACCOUNT\",\"pipeName\":\"MYDB.MYSCHEMA.MYPIPE\",\"tableName\":\"MYDB.MYSCHEMA.MYTABLE\",\"stageLocation\":\"gcs://mybucket/mypath\",\"messages\":[{\"fileName\":\"/file1.csv_0_0_0.csv.gz\",\"firstError\":\"Numeric value 'abc' is not recognized\"}]}
Copy

Beachten Sie, dass Sie die Zeichenfolge in ein JSON-Objekt parsen müssen, um die Werte in der Nutzlast zu verarbeiten.