Dépanner le Snowflake Connector for Kafka¶
Ce chapitre décrit comment résoudre les problèmes courants liés au Snowflake Connector for Kafka.
Erreurs d’ingestion¶
Le canal signale une augmentation de rows_error_count.¶
Si le canal Snowpipe Streaming signale une augmentation de rows_error_count, le comportement du connecteur dépend du paramètre errors.tolerance :
Avec
errors.tolerance=none(par défaut), la tâche du connecteur échoue avecERROR_5030.Avec
errors.tolerance=all, le connecteur continue de fonctionner, mais enregistre le nombre d’erreurs.
Note
Avec la validation côté serveur et errors.tolerance=none, les erreurs sont asynchrones. Le connecteur détecte l’erreur lors du cycle de pré-validation suivant, de sorte que certains enregistrements supplémentaires peuvent être ingérés avant l’échec de la tâche.
Pour enquêter :
Vérifiez la table d’erreurs associée à votre table cible pour identifier les enregistrements en échec. Voir Gestion des erreurs dans l’architecture hautes performances de Snowpipe Streaming pour plus de détails.
Utilisez la technique de recherche des écarts décrite dans Détecter les erreurs et y remédier à l’aide des décalages de métadonnées avec les informations de décalage Kafka provenant de la colonne
RECORD_METADATA.Examinez les journaux du connecteur pour obtenir des détails sur les erreurs (activez
errors.log.enable=truepour obtenir des journaux complets).
La tâche du connecteur échoue avec ERROR _5030¶
ERROR_5030 indique que le connecteur a détecté une erreur d’ingestion de données. Les causes courantes sont les suivantes :
Le type de données ne correspond pas entre l’enregistrement Kafka et le schéma de la table cible.
Un canal créé par l’utilisateur existe alors que
snowflake.validation=client_sideest configurée. La validation côté client ne fonctionne qu’avec le canal par défaut.Les modifications du schéma dans les enregistrements Kafka ne peuvent pas être mises à jour automatiquement.
Pour résoudre cette erreur :
Examinez le message d’erreur et les journaux du connecteur pour en déterminer la cause exacte.
Si vous utilisez la validation côté client avec un canal défini par l’utilisateur, passez à
snowflake.validation=server_sideou supprimez le canal défini par l’utilisateur.Corrigez les données dans le sujet Kafka source ou ajustez le schéma de la table cible.
Problèmes d’évolution du schéma¶
Avec la validation côté serveur, l’évolution du schéma ne peut pas toujours déduire le type de données correct. Par exemple, il ne peut pas déduire de colonnes binaires et peut interpréter une chaîne comme "2026-04-13" en tant que DATE au lieu de TEXT.
Si l’évolution du schéma produit des types de colonnes inattendus :
Utilisez la validation côté client (
snowflake.validation=client_side) pour une meilleure inférence de type.Pré-créez la table avec le schéma correct avant de démarrer le connecteur.
Note
Le connecteur ne met en cache que le schéma de la table. Les opérations DDL concurrentes sur la table cible pendant l’exécution du connecteur peuvent entraîner un comportement indéfini. Évitez d’exécuter des DDL sur les tables dans lesquelles le connecteur est activement en train d’ingérer des données.
Problèmes de connexion et d’authentification¶
Échecs d’authentification¶
Le connecteur v4 ne prend en charge que l’authentification par paire de clés. Problèmes d’authentification courants :
Clé privée non valide : Vérifiez que la valeur
snowflake.private.keyest une clé privée PKCS#8 encodée en Base64 valide.Phrase secrète de clé : Si votre clé est chiffrée, définissez
snowflake.private.key.passphrasesur la phrase secrète correcte.Privilèges de rôle : Vérifiez que le rôle spécifié dans
snowflake.role.namedispose des privilèges requis. Voir Snowflake Connector for Kafka : Configurer Snowflake pour plus de détails.
Problèmes de configuration¶
Convertisseur non pris en charge avec la schématisation¶
Lorsque snowflake.enable.schematization=true (par défaut), StringConverter et ByteArrayConverter ne sont pas pris en charge en tant que convertisseurs de valeurs. Utilisez plutôt des convertisseurs structurés :
org.apache.kafka.connect.json.JsonConverterio.confluent.connect.avro.AvroConverterio.confluent.connect.protobuf.ProtobufConverter
Suppression des propriétés de configuration de la v3¶
Si vous constatez des erreurs concernant des propriétés de configuration non reconnues, vérifiez si vous utilisez des propriétés qui ont été supprimées dans la v4. Consultez Migrer du connecteur Kafka v3 vers v4 pour obtenir la liste complète des configurations supprimées.
Échecs du validateur de compatibilité au démarrage¶
Si le connecteur échoue au démarrage avec des erreurs concernant des valeurs de configuration manquantes ou incompatibles, le validateur de compatibilité (snowflake.streaming.validate.compatibility.with.classic) vérifie votre configuration par rapport aux exigences de migration v3.
Pour les nouvelles installations : Définissez
snowflake.streaming.validate.compatibility.with.classic=falsepour ignorer la vérification.Pour les migrations depuis v3 : Définissez explicitement toutes les propriétés de compatibilité requises. Consultez snowflake.streaming.validate.compatibility.with.classic pour obtenir la liste complète.
Problèmes de performances¶
Délai d’ingestion prolongé¶
Si le latest-consumer-offset moins l’écart persisted-in-snowflake-offset augmente (visible à travers les métriques JMX), le connecteur est en retard.
Pour résoudre cette erreur :
Ajouter des tâches : Définissez
tasks.maxsur une valeur plus proche du nombre total de partitions Kafka. La performance optimale est généralement de deux tâches par cœur de CPU sur le cluster Kafka Connect.Vérifier la contre-pression : Si la métrique
backpressure-rewind-countaugmente, le SDK Snowpipe Streaming a atteint sa capacité maximale. Envisagez de réduire votre cluster Kafka Connect.Examiner la mémoire de la JVM : Limitez la taille du tas de la JVM à environ 50 % de la mémoire disponible. Le SDK Snowpipe Streaming basé sur Rust utilise de la mémoire hors tas pour la mise en mémoire tampon, qui n’est pas gérée par la JVM.
Mise en cache des tables et des canaux¶
Le connecteur met en cache les contrôles d’existence des tables et des canaux afin de réduire les requêtes dans la base de données. Si vous rencontrez des problèmes avec le connecteur qui ne détecte pas les tables ou les canaux nouvellement créés, ajustez le délai d’expiration du cache :
Récupération soutenue des canaux¶
Les récupérations de canaux occasionnelles sont normales. Cependant, si la métrique channel-recovery-count augmente continuellement, cela peut indiquer :
Des modifications du schéma de la table cible qui entrent en conflit avec le schéma mis en cache du connecteur.
Des modifications d’autorisations qui affectent le rôle du connecteur.
Une instabilité du réseau entre le cluster Kafka Connect et Snowflake.
Examinez les journaux du connecteur pour connaître les raisons précises de la récupération.
Fuite de clients SDK¶
Si la métrique sdk-client-count de la JMX augmente continuellement, le connecteur peut présenter une fuite de clients SDK Snowpipe Streaming. Chaque table cible distincte doit avoir un client SDK. Si le nombre total dépasse le nombre de tables distinctes, contactez le Support Snowflake.
Problèmes de migration¶
Canal SSv1 introuvable lors de la migration des décalages¶
Si le connecteur échoue avec une erreur de canal non trouvé lors de l’utilisation de snowflake.streaming.classic.offset.migration=strict :
Vérifiez que vous utilisez le même nom de connecteur que votre déploiement v3.
Vérifiez si
snowflake.streaming.classic.offset.migration.include.connector.namecorrespond à votre paramètre v3 poursnowflake.streaming.channel.name.include.connector.name.Basculez vers le mode
best_effortsi le canal a déjà été nettoyé, ou si vous ajoutez de nouveaux sujets qui n’existaient pas dans la v3.
Doublons après la migration¶
Si vous voyez des enregistrements en double après une migration depuis la v3 :
Vérifiez que
RECORD_METADATAcontient des champs de sujet, de partition et de décalage.Utilisez la requête de déduplication dans Mise à niveau de v4 vers v3 pour supprimer les doublons.
Connexion¶
Le SDK Snowpipe Streaming peut produire des journaux complets. Pour réduire le bruit des journaux, définissez la variable d’environnement suivante sur vos processus Kafka Connect :
Pour une journalisation du connecteur détaillée avec le contexte, configurez le modèle de journalisation :
Signaler des problèmes¶
Pour les problèmes non abordés par ce guide, contactez le Support Snowflake.