Questions fréquentes (FAQ) sur Auto Loader

Trouvez des réponses aux questions fréquemment posées sur databricks Auto Loader.

Auto Loader traite-t-il à nouveau le fichier lorsque le fichier est rajouté ou remplacé ?

Avec le paramètre par défaut (cloudFiles.allowOverwrites = false), les fichiers sont traités exactement une seule fois. Lorsqu’un fichier est ajouté ou remplacé, le chargeur automatique ne peut pas garantir la version du fichier qui sera traitée. Pour autoriser le chargeur automatique à traiter à nouveau le fichier lorsqu’il est ajouté ou remplacé, vous pouvez définir cloudFiles.allowOverwrites sur true. Dans ce cas, le chargeur automatique est garanti pour traiter la dernière version du fichier. Toutefois, le chargeur automatique ne peut pas garantir la version intermédiaire traitée.

Soyez prudent si vous activez cloudFiles.allowOverwrites en mode de notification de fichier. En mode notification de fichier, le chargeur automatique peut identifier de nouveaux fichiers par le biais des notifications de fichiers et de la liste des répertoires. Étant donné que l’heure de l’événement de notification de fichier et l’heure de modification du fichier peuvent différer, le chargeur automatique peut recevoir deux horodatages différents et ingérer le même fichier deux fois, même si le fichier n’a pas été mis à jour.

Une fois cloudFiles.allowOverwrites activé, vous devez gérer vous-même les enregistrements dupliqués. Le chargeur automatique retraite l’intégralité du fichier, même lorsqu’il est ajouté à ou partiellement mis à jour. En général, Azure Databricks recommande d’utiliser le chargeur automatique pour ingérer des fichiers immuables uniquement et en utilisant le paramètre cloudFiles.allowOverwrites = falsepar défaut. Si vous avez d’autres questions, contactez votre équipe de compte Azure Databricks.

Comment le chargeur automatique détermine-t-il si un fichier a été ingéré ou non ?

Le chargeur automatique ingère normalement chaque fichier une seule fois en fonction de son chemin de fichier. Toutefois, si vous définissez l’option allowOverwrites sur true, Auto Loader utilise également l’horodatage de dernière modification du fichier pour déterminer si un fichier est nouveau ou a été mis à jour et doit être réingéré. Voir Le chargeur automatique traite-t-il à nouveau le fichier lorsque le fichier est ajouté ou remplacé ?

Si mes fichiers de données n’arrivent pas en continu, mais à intervalles réguliers, par exemple une fois par jour, dois-je quand même utiliser cette source et y a-t-il des avantages ?

Dans ce cas, vous pouvez configurer un travail Structured Streaming Trigger.AvailableNow (disponible dans Databricks Runtime 10.4 LTS et versions ultérieures) et le programmer pour qu’il s’exécute après l’heure d’arrivée prévue du fichier. Auto Loader fonctionne bien avec des mises à jour fréquentes ou peu fréquentes. Même si les mises à jour éventuelles sont très volumineuses, Auto Loader s'adapte bien à la taille de l'entrée. Les techniques de découverte de fichiers efficaces du chargeur automatique et les fonctionnalités d’évolution du schéma rendent le chargeur automatique la méthode recommandée pour l’ingestion de données incrémentielles.

Comment Auto Loader déduit-il le schéma ?

Lorsque le DataFrame est défini pour la première fois, Auto Loader répertoire votre répertoire source et choisit les 50 Go de données ou les 1 000 fichiers les plus récents (par heure de modification de fichier), puis les utilise pour déduire votre schéma de données.

Auto Loader déduit également les colonnes de partition en examinant la structure du répertoire source et recherche les chemins de fichiers qui contiennent la structure /key=value/. Si le répertoire source affiche une structure incohérente, par exemple :

base/path/partition=1/date=2020-12-31/file1.json
// inconsistent because date and partition directories are in different orders
base/path/date=2020-12-31/partition=2/file2.json
// inconsistent because the date directory is missing
base/path/partition=3/file3.json

Auto Loader déduit les colonnes de partition comme étant vides. Utilisez cloudFiles.partitionColumns pour analyser explicitement les colonnes de la structure du répertoire.

Comment se comporte Auto Loader lorsque le dossier source est vide ?

Si le répertoire source est vide, Auto Loader vous oblige à fournir un schéma, car il n’y a aucune donnée pour effectuer l’inférence.

Quand Auto Loader déduit-il le schéma ? L’évolution est-elle automatique après chaque micro-batch ?

Le schéma est déduit lorsque le DataFrame est défini pour la première fois dans votre code. Pendant chaque micro-lot, les modifications de schéma sont évaluées à la volée ; ainsi, vous n’avez pas besoin de vous soucier des impacts sur les performances. Lorsque le flux redémarre, il récupère le schéma évolué à partir de l’emplacement du schéma, puis démarre l’exécution sans aucune surcharge d’inférence.

Quel est l’impact sur les performances lors de l'ingestion des données lors de l'utilisation de l'inférence de schéma d'Auto Loader ?

Attendez-vous à ce que l’inférence du schéma prenne quelques minutes pour les répertoires source très volumineux lors de l’inférence initiale du schéma. Sinon, vous ne devriez pas constater de baisse significative des performances pendant l’exécution du flux. Si vous exécutez votre code dans un notebook Azure Databricks, vous pouvez voir les mises à jour d’état qui spécifient quand Auto Loader répertorie votre répertoire pour l’échantillonnage et la déduction de votre schéma de données.

En raison d’un bogue, un fichier incorrect a modifié mon schéma de façon radicale. Que dois-je faire pour restaurer une modification de schéma ?

Contactez le support Databricks pour obtenir de l'aide.

Que se passe-t-il si je modifie l’emplacement du point de contrôle lors du redémarrage du flux ?

Un emplacement de point de contrôle conserve les informations d’identification importantes d’un flux. Le fait de changer l’emplacement du point de contrôle signifie que vous avez abandonné le flux précédent et que vous avez démarré un nouveau flux.

Dois-je créer au préalable des services de notification d’événements ?

Non. Si vous choisissez le mode de notification de fichiers et fournissez les autorisations requises, Auto Loader peut créer des services de notification de fichiers pour vous. Consultez Gérer les files d’attente de notification de fichier pour chaque flux de chargeur automatique séparément (classique).

Si les événements de fichier sont activés sur l’emplacement externe dans le catalogue Unity, le service d’événements de fichier peut créer les événements de fichier dans votre fournisseur de cloud et vous n’avez pas besoin de configurer le chargeur automatique pour les créer pour chaque flux. Voir Utiliser le mode de notification de fichier avec les événements de fichier

Puis-je exécuter plusieurs requêtes de streaming à partir de différents répertoires d’entrée sur le même compartiment/conteneur ?

Oui, tant qu’il ne s’agit pas de répertoires parent-enfant. Par exemple, prod-logs/ et prod-logs/usage/ ne fonctionnent pas, car /usage est un répertoire enfant de /prod-logs.

Puis-je utiliser cette fonctionnalité lorsqu’il existe des notifications de fichiers sur mon compartiment ou conteneur ?

Oui, tant que votre répertoire d’entrée n’est pas en conflit avec le préfixe de notification existant (par exemple, les répertoires parent-enfant ci-dessus).

Puis-je partager une file d’attente SQS entre le chargeur automatique et d’autres applications ?

Databricks ne recommande pas de partager une file d’attente SQS entre le chargeur automatique et d’autres applications. Au lieu de cela, transférez vos notifications d’événements S3 à une rubrique SNS, puis abonnez une file d’attente SQS distincte pour chaque application à cette rubrique. Utilisez une stratégie de filtre d’abonnement SNS pour vous assurer que seuls les messages pertinents sont transférés à chaque file d’attente. Fournissez ensuite la file d'attente dédiée à Auto Loader.

Comment vérifier que les événements de fichier sont configurés correctement ?

Cliquez sur le bouton Tester la connexion dans la page d’emplacement externe. Si vous configurez correctement les événements de fichier, vous verrez une coche verte pour l’élément De lecture des événements de fichier . Si vous venez de créer l’emplacement externe et activé les événements de fichier en Automatic mode, le test s’affiche Skipped lorsque Azure Databricks configure des notifications pour l’emplacement externe. Patientez quelques minutes, puis cliquez à nouveau sur Tester la connexion . Si Azure Databricks n'a pas les autorisations requises pour configurer ou lire à partir d'événements de fichier, une erreur s'affiche pour l'élément File Events Read.

Puis-je éviter une liste complète d’annuaires pendant l’exécution initiale ?

Non. Même si includeExistingFiles est défini sur false, le chargeur automatique effectue un listage de répertoires pour découvrir les fichiers créés après le démarrage du flux et pour actualiser le cache des événements de fichiers (sécuriser une position de lecture valide dans le cache et le stocker dans le point de contrôle du flux).

Dois-je définir cloudFiles.backfillInterval pour éviter les fichiers manquants ?

Non. Azure Databricks a précédemment recommandé ce paramètre pour le mode de notification de fichier classique, car les systèmes de notification de stockage cloud pourraient entraîner des fichiers manquants ou arrivés en retard. À présent, Azure Databricks effectue des listages de répertoires complets sur l'emplacement externe. La première liste de répertoires complets commence dès que les événements de fichier sont activés sur l’emplacement externe. Chaque liste suivante se produit 24 heures après la dernière analyse complète tant qu’il existe au moins un flux de chargeur automatique à l’aide d’événements de fichier pour ingérer des données.

J’ai configuré des événements de fichier avec une file d’attente de stockage fournie, mais la file d’attente a été mal configurée et j’ai manqué des fichiers. Comment vérifier que le chargeur automatique ingère les fichiers manqués lorsque ma file d’attente a été mal configurée ?

Tout d’abord, vérifiez que la configuration incorrecte de la file d’attente fournie est corrigée. Pour vérifier, cliquez sur le bouton Tester la connexion dans la page d’emplacement externe. Si vous configurez correctement les événements de fichier, une coche verte s’affiche pour l’élément De lecture des événements de fichier .

Azure Databricks effectue une liste complète de répertoires pour les emplacements externes avec des événements de fichier activés. Cette liste de répertoires découvre tous les fichiers qui ont été manqués pendant la période de configuration incorrecte et les stocke dans le cache des événements de fichier.

Une fois que la configuration incorrecte est corrigée et qu’Azure Databricks termine la liste des répertoires, le chargeur automatique continue de lire à partir du cache des événements de fichier et ingère automatiquement tous les fichiers manqués pendant la période de configuration incorrecte.

Comment se remettre d'une CF_MANAGED_FILE_EVENTS_INVALID_CONTINUATION_TOKEN erreur ?

Cette erreur se produit lorsque le jeton de continuation stocké dans le point de contrôle du chargeur automatique pour le service d’événements de fichiers n’est plus valide.

Voici quelques causes courantes :

  • cloudFiles.useManagedFileEvents a été désactivé puis réactivé.
  • Modification de l’emplacement ou du volume externe de la source.
  • Modification de la file d’attente fournie.
  • Modification des options cloudFiles.allowOverwrites ou cloudFiles.readChangeFeed.

Pour récupérer :

  1. Définissez .option("cloudFiles.listOnStart", "true") et .option("cloudFiles.validateOptions", false) sur votre requête de diffusion en continu.
  2. Redémarrez le flux. Le chargeur automatique effectue une liste complète de répertoires au démarrage et contourne le jeton de continuation non valide.
  3. Après un micro-lot réussi, supprimez ces deux options et redémarrez de nouveau le flux.

Pour plus d’informations sur l’option cloudFiles.listOnStart , consultez Notification de fichier.

Comment nettoyer les ressources de notification d’événements créées par Auto Loader ?

Vous pouvez utiliser le gestionnaire des ressources cloud pour répertorier et supprimer des ressources. Vous pouvez également supprimer ces ressources manuellement à l’aide de l’interface utilisateur ou des API du fournisseur cloud.

Comment surveiller mon pipeline Auto Loader ?

Le chargeur automatique expose les métriques clés via StreamingQueryListener et l’état d’ingestion au niveau du fichier via cloud_files_state(). Pour obtenir des conseils sur la surveillance des métriques, l’interrogation de l’état d’ingestion, la création de tableaux de bord d’observabilité et la résolution des problèmes courants, consultez Surveiller et observer le chargeur automatique.