Vue d'ensemble d'Auto Loader avec événements de fichiers
L’option cloudFiles.useManagedFileEvents avec Auto Loader permet une découverte efficace des fichiers.
Comment fonctionne Auto Loader avec les événements de fichiers ?
Auto Loader avec les événements de fichiers utilise la fonctionnalité de notifications d'événements de fichiers fournie par les fournisseurs de cloud. Vous pouvez configurer des conteneurs de stockage cloud pour publier des notifications lors d'événements de fichier tels que la création et la modification de nouveaux fichiers. Par exemple, avec des notifications d'événements Amazon S3, l'arrivée d'un nouveau fichier peut déclencher une notification vers un sujet Amazon SNS (voir la structure de contenu des notifications Amazon S3 pour plus de détails). Vous pouvez ensuite abonner une file d'attente Amazon SQS au sujet SNS pour le traitement asynchrone de l'événement.

Databricks File Events est un service qui configure des ressources cloud pour écouter les événements de fichier. Vous pouvez également configurer vous-même les ressources cloud et fournir votre propre file d'attente de stockage.
Après avoir configuré les ressources cloud, le service traite les notifications d'événements de fichiers et met en cache les métadonnées de fichier. Auto Loader utilise ce cache pour découvrir les fichiers lorsqu'il est exécuté avec cloudFiles.useManagedFileEvents défini sur true.

Lorsqu'un Stream s'exécute pour la première fois avec cloudFiles.useManagedFileEvents défini sur true, l'Auto Loader effectue une liste complète des répertoires du chemin de chargement pour découvrir tous les fichiers et se mettre à jour avec le cache des événements de fichier (sécuriser une position de lecture valide dans le cache et la stocker dans le point de contrôle du Stream). Les exécutions ultérieures de l'Auto Loader découvrent de nouveaux fichiers en lisant directement à partir du cache des événements de fichier en utilisant la position de lecture stockée et ne nécessitent pas de listage de répertoire.
Databricks recommande d'exécuter vos Stream Auto Loader au moins une fois tous les sept jours pour tirer parti de la découverte incrémentielle de fichiers à partir du cache. Si vous n'exécutez pas Auto Loader au moins aussi souvent, la position de lecture stockée devient invalide et Auto Loader doit effectuer un listage complet du répertoire pour se synchroniser avec le cache des événements de fichier.
Mode événements de fichiers ou mode classique de notification de fichiers
Ce diagramme compare le mode Événements de fichier et le mode Notifications de fichier classique.

En mode événements de fichier, un service d'événements de fichier géré unique se connecte au stockage cloud du client. Il crée un sujet SNS partagé, une file d'attente SQS et un abonnement SNS vers SQS qui dessert plusieurs consommateurs, y compris Auto Loader et Triggers. En mode notifications de fichiers classique, chaque consommateur nécessite son propre abonnement aux événements et sa propre file d'attente, ce qui entraîne plusieurs pipelines de notification distincts par compartiment.
Le mode événements de fichiers présente plusieurs avantages comparé au mode de notification de fichiers classique. Principalement, il ne nécessite qu'une seule file d'attente pour tous les flux Auto Loader sur un compartiment, ce qui vous aide à éviter la limite de notifications par compartiment. Pour plus d'informations, consultez Mode de notification de fichiers avec et sans événements de fichiers activés sur les emplacements externes.
Quand Auto Loader utilise-t-il la liste de répertoires avec les événements de fichiers ?
Auto Loader effectue une liste de répertoires complète lorsque :
- Démarrage d'un nouveau stream.
- Migration d'un Stream à partir de l'énumération de répertoires ou de notifications de fichiers classiques.
- Auto Loader avec les événements de fichiers n'est pas exécuté pendant plus de sept jours.
- Vous effectuez des mises à jour de l’emplacement externe qui invalident la position de lecture d’Auto Loader. Voici des exemples : lorsque vous désactivez et réactivez les événements de fichier, lorsque vous modifiez le chemin de l'emplacement externe ou lorsque vous fournissez une autre file d'attente pour l'emplacement externe.
Auto Loader effectue toujours un listage complet lors de la première exécution, même lorsque includeExistingFiles est défini sur false. Cet indicateur vous permet d'ingérer tous les fichiers qui ont été créés après l'heure de start du Stream. Auto Loader liste l'intégralité du répertoire pour découvrir tous les fichiers créés après l'heure de start du Stream, établit une position de lecture dans le cache des événements de fichier et la stocke dans le point de contrôle. Les exécutions ultérieures lisent directement à partir du cache des événements de fichier et ne nécessitent pas de listage de répertoire.
Le service d'événements de fichiers Databricks effectue également des listages complets de répertoires sur l'emplacement externe pour vérifier qu'il n'a manqué aucun fichier (par exemple, si la file d'attente fournie est mal configurée). Le premier listage complet du répertoire commence dès que les événements de fichiers sont activés sur l'emplacement externe. Chaque liste ultérieure se produit 24 heures après la dernière analyse complète tant qu'il y a au moins un Stream Auto Loader utilisant des événements de fichier pour ingérer des données.
Meilleures pratiques pour Auto Loader avec les événements de fichier
Suivez ces meilleures pratiques pour optimiser les performances et la fiabilité lors de l'utilisation d'Auto Loader avec les événements de fichier.
Utilisez des volumes pour une découverte optimale des fichiers
Pour des performances améliorées, Databricks recommande de créer un volume externe pour chaque chemin ou sous-répertoire à partir duquel Auto Loader charge les données et de fournir les chemins de volume (par exemple, /Volumes/someCatalog/someSchema/someVolume) à Auto Loader au lieu des chemins cloud (par exemple, s3://bucket/path/to/volume). Cela optimise la découverte de fichiers car Auto Loader peut lister le volume en utilisant un modèle d'accès aux données optimisé.
Envisagez des Trigger d'arrivée de fichiers pour les pipelines événementiels
Pour le traitement de données basé sur les événements, envisagez d'utiliser un file arrival Trigger au lieu d'un pipeline continu. Les Trigger d'arrivée de fichiers start automatiquement votre pipeline lorsque de nouveaux fichiers arrivent, offrant une meilleure utilisation des ressources et une meilleure rentabilité, car votre cluster ne s’exécute que lorsqu'il y a de nouveaux fichiers à traiter.
Configurez des intervalles appropriés avec des Trigger continus
Databricks recommande d'utiliser des Trigger d'arrivée de fichiers pour traiter les fichiers dès qu'ils arrivent. Cependant, si votre cas d'utilisation nécessite une latence plus faible à l'aide de Trigger continus tels que Trigger.ProcessingTime, Databricks recommande de configurer les intervalles de Trigger à 1 minute ou plus. Dans les Lakeflow Pipelines, définissez cette valeur à l'aide de pipelines.trigger.interval. Cela réduit la fréquence d'interrogation pour vérifier si de nouveaux fichiers sont arrivés et permet à un plus grand nombre de Stream de s'exécuter simultanément depuis votre Workspace.
Pour les exigences à très faible latence, envisagez plutôt le mode de notification de fichier classique. Les événements de fichier introduisent un saut de mise en cache supplémentaire entre le stockage cloud et Auto Loader, ce qui peut ajouter de la latence par rapport à la lecture directe depuis la file d'attente cloud.
Limitations d'Auto Loader avec les événements de fichiers
Auto Loader ne prend pas en charge les réécritures de chemins. Les réécritures de chemin s'appliquent lorsque plusieurs compartiments ou conteneurs sont montés sous DBFS, ce qui est un modèle d'utilisation obsolète.
Pour obtenir une liste générale des limitations relatives aux événements de fichier, consultez la section Limitations relatives aux événements de fichier.