Partager via


Questions fréquentes (FAQ) sur Auto Loader

Questions fréquemment posées sur Auto Loader de Databricks.

Auto Loader traite-t-il à nouveau le fichier lorsque le fichier est ajouté ou écrasé ?

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.

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 possibles mises à jour sont très volumineuses, Auto Loader se met correctement à l’échelle de 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.

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 chargement automatique séparément (hérité).

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

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.

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).

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. Vous ne devriez pas observer de détérioration significative des performances autrement 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.

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 à true, le chargeur automatique utilisera é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é ?