Problembehandlung eines Snowflake Connector for Kafka¶
Unter diesem Thema wird beschrieben, wie Sie häufige Probleme mit Snowflake Connector for Kafka beheben können.
Datenaufnahmefehler¶
Kanal meldet eine Erhöhung von rows_error_count¶
Wenn der Snowpipe Streaming-Kanal ansteigende rows_error_count meldet, hängt das Verhalten des Konnektors von der errors.tolerance-Einstellung ab:
Mit
errors.tolerance=none(Standard) scheitert die Konnektoraufgabe mitERROR_5030.Mit
errors.tolerance=allfährt der Konnektor fort, protokolliert aber die Fehleranzahl.
Bemerkung
Mit serverseitiger Validierung und errors.tolerance=none sind Fehler asynchron. Der Konnektor erkennt den Fehler im nächsten Pre-Commit-Zyklus, sodass möglicherweise einige zusätzliche Datensätze eingelesen werden, bevor die Aufgabe fehlschlägt.
Zur Untersuchung:
Überprüfen Sie die Fehlertabelle, die mit Ihrer Zieltabelle verbunden ist, um die fehlerhaften Datensätze zu identifizieren. Weitere Informationen dazu finden Sie unter Fehlerbehandlung bei der leistungsstarken Snowpipe Streaming-Architektur.
Verwenden Sie die unter Metadaten-Offsets zum Erkennen und Wiederherstellen von Fehlern verwenden beschriebene Lückensuche-Technik mit Kafka-Offset-Informationen aus der
RECORD_METADATA-SpalteÜberprüfen Sie die Konnektorprotokolle auf Fehlerdetails (aktivieren Sie
errors.log.enable=truefür ausführliche Protokollierung).
Konnektoraufgabe schlägt mit ERROR_5030 fehl.¶
ERROR_5030 zeigt an, dass der Konnektor einen Datenaufnahmefehler festgestellt hat. Zu den häufigsten Ursachen gehören:
Datentypen zwischen dem Kafka-Datensatz und dem Schema der Zieltabelle stimmen nicht überein.
Eine vom Benutzer erstellte Pipe existiert, während
snowflake.validation=client_sidekonfiguriert ist. Die clientseitige Validierung funktioniert nur mit der Standard-Pipe.Schemaänderungen in den Kafka-Datensätzen, die nicht automatisch weiterentwickelt werden können.
Zur Behebung:
Überprüfen Sie die Fehlermeldung und die Protokolle des Konnektors auf die spezifische Ursache.
Wenn Sie die clientseitige Validierung mit einer benutzerdefinierten Pipe verwenden, wechseln Sie zu
snowflake.validation=server_sideoder entfernen Sie die benutzerdefinierte Pipe.Korrigieren Sie die Daten im Kafka-Quellthema, oder passen Sie das Schema der Zieltabelle an.
Probleme bei der Schemaentwicklung¶
Bei der serverseitigen Validierung kann die Schemaentwicklung nicht immer den richtigen Datentyp ermitteln. So kann es zum Beispiel keine binären Spalten ableiten und kann eine Zeichenfolge wie "2026-04-13" als DATE anstelle von TEXT interpretieren.
Wenn die Schemaentwicklung unerwartete Spaltentypen erzeugt:
Verwenden Sie clientseitige Validierung (
snowflake.validation=client_side) zur besseren Typ-Inferenz.Erstellen Sie vorab die Tabelle mit dem korrekten Schema, bevor Sie den Konnektor starten.
Bemerkung
Der Konnektor speichert nur das Tabellenschema im Cache. Gleichzeitige DDL-Operationen auf der Zieltabelle während der Konnektor ausgeführt wird, können zu undefiniertem Verhalten führen. Vermeiden Sie das Ausführen von DDL für Tabellen, in die der Konnektor aktiv Daten einliest.
Probleme mit Verbindung und Authentifizierung¶
Authentifizierungsfehler¶
Der v4-Konnektor unterstützt nur die Authentifizierung mit Schlüsselpaaren. Häufige Probleme bei der Authentifizierung:
Ungültiger privater Schlüssel: Überprüfen Sie, ob der
snowflake.private.key-Wert ein gültiger Base64-kodierter privater PKCS #8-Schlüssel ist.Schlüsselpassphrase: Wenn Ihr Schlüssel verschlüsselt ist, stellen Sie
snowflake.private.key.passphraseauf die korrekte Passphrase ein.Berechtigungen von Rollen Überprüfen Sie, ob die in
snowflake.role.nameangegebene Rolle über die erforderlichen Berechtigungen verfügt. Weitere Informationen dazu finden Sie unter Snowflake Connector for Kafka: Snowflake konfigurieren.
Konfigurationsprobleme¶
Nicht unterstützter Konverter mit Schematisierung¶
Wenn snowflake.enable.schematization=true (der Standardwert), werden StringConverter und``ByteArrayConverter`` nicht als Wertkonverter unterstützt. Verwenden Sie stattdessen strukturierte Konverter:
org.apache.kafka.connect.json.JsonConverterio.confluent.connect.avro.AvroConverterio.confluent.connect.protobuf.ProtobufConverter
Die Konfigurationseigenschaften von v3 wurden entfernt¶
Wenn Sie Fehlermeldungen zu nicht erkannten Konfigurationseigenschaften erhalten, prüfen Sie, ob Sie Eigenschaften verwenden, die in v4 entfernt wurden. Siehe Migration vom Kafka-Konnektor v3 auf v4 für eine vollständige Liste der entfernten Konfigurationen.
Fehler des Kompatibilitätsvalidators beim Start¶
Wenn der Konnektor beim Start mit Fehlern über fehlende oder inkompatible Konfigurationswerte fehlschlägt, überprüft der Kompatibilitätsvalidator (snowflake.streaming.validate.compatibility.with.classic) Ihre Konfiguration anhand der Migrationsanforderungen von v3.
Für Neuinstallationen: Legen Sie
snowflake.streaming.validate.compatibility.with.classic=falsefest, um die Prüfung zu überspringen.Für Migrationen von v3: Legen Sie alle erforderlichen Kompatibilitätseigenschaften explizit fest. Siehe snowflake.streaming.validate.compatibility.with.classic für die vollständige Liste.
Leistungsprobleme¶
Datenaufnahmeverzögerung nimmt zu¶
Wenn die Lücke latest-consumer-offset minus persisted-in-snowflake-offset größer wird (sichtbar durch JMX-Kennzahlen) fällt der Konnektor zurück.
Zur Behebung:
Aufgaben erhöhen: Legen Sie
tasks.maxnäher an der Gesamtzahl der Kafka-Partitionen fest. Die optimale Leistung ist normalerweise 2 Aufgaben pro CPU-Kern für den Kafka Connect-Cluster.Rückdruck prüfen: Wenn die
backpressure-rewind-count-Kennzahl steigt, ist das Snowpipe Streaming-SDK ausgelastet. Ziehen Sie in Erwägung, Ihr Kafka Connect-Cluster horizontal zu skalieren.JVM-Speicher überprüfen: Begrenzen Sie JVM-Heap auf etwa 50 % des verfügbaren Arbeitsspeichers. Die auf Rust basierende Snowpipe Streaming-SDK verwendet Off-Heap-Speicher für die Pufferung, welcher nicht von der JVM verwaltet wird.
Tabellen- und Pipe-Caching¶
Der Konnektor speichert Überprüfungen auf das Vorhandensein von Tabellen und Pipes im Cache, um Datenbankabfragen zu reduzieren. Wenn Sie Probleme damit haben, dass der Konnektor neu erstellte Tabellen oder Pipes nicht erkennt, passen Sie die Cache-Ablaufzeit an:
Anhaltende Wiederherstellung des Kanals¶
Gelegentliche Wiederherstellungen des Kanals sind normal. Wenn jedoch die channel-recovery-count-Kennzahl kontinuierlich steigt, kann dies Folgendes anzeigen:
Schemaänderungen in der Zieltabelle, die mit dem zwischengespeicherten Schema des Konnektors in Konflikt stehen.
Berechtigungsänderungen, die sich auf die Rolle des Konnektors auswirken.
Netzwerkinstabilität zwischen dem Kafka Connect-Cluster und Snowflake.
Überprüfen Sie die Konnektorprotokolle auf bestimmte Gründe für die Wiederherstellung.
SDK-Client-Leck¶
Wenn die sdk-client-count JMX-Kennzahl kontinuierlich steigt, lässt der Konnektor möglicherweise Snowpipe Streaming-SDK-Clients durchsickern. Jede einzelne Zieltabelle sollte einen SDK-Client haben. Falls die Anzahl die Zahl der eindeutigen Tabellen überschreitet, kontaktieren Sie bitte den Snowflake-Support.
Probleme bei der Migration¶
SSv1-Kanal während Offset-Migration nicht gefunden¶
Wenn der Konnektor bei Verwendung von snowflake.streaming.classic.offset.migration=strict mit einem „Kanal nicht gefunden“-Fehler fehlschlägt:
Vergewissern Sie sich, dass Sie denselben Konnektornamen wie Ihre v3-Bereitstellung verwenden.
Prüfen Sie, ob
snowflake.streaming.classic.offset.migration.include.connector.namemit Ihrer v3-Einstellung fürsnowflake.streaming.channel.name.include.connector.nameübereinstimmt.Wechseln Sie in den
best_effort-Modus, wenn der Kanal bereits bereinigt wurde oder wenn Sie neue Themen hinzufügen, die in v3 nicht existierten.
Duplikate nach der Migration¶
Wenn Sie nach der Migration von v3 doppelte Datensätze sehen:
Überprüfen Sie, ob
RECORD_METADATAThemen-, Partitions- und Offsetfelder enthält.Verwenden Sie die Abfrage zur Deduplizierung in:ref:
label-downgrade-v4-to-v3zum Entfernen von Duplikaten.
Protokollieren¶
Snowpipe Streaming-SDK kann ausführliche Protokolleinträge erzeugen. Um das Rauschen zu reduzieren, richten Sie die folgende Umgebungsvariable für Ihre Kafka Connect-Worker ein:
Für eine detaillierte Protokollierung des Konnektors mit Kontext konfigurieren Sie das Protokollmuster:
Probleme melden¶
Bei Problemen, die nicht in diesem Leitfaden behandelt werden, wenden Sie sich an den ` Snowflake-Support`_.