Partage 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é ?

Les fichiers sont traités une seule fois, sauf si cloudFiles.allowOverwrites est activé. Lorsqu'un fichier est ajouté ou écrasé, Azure Databricks ne peut pas garantir la version du fichier qui sera traitée. Vous devez également faire preuve de prudence cloudFiles.allowOverwrites lors de l'activation du mode de notification de fichier, où Auto Loader peut identifier de nouveaux fichiers via les notifications de fichiers et la liste des répertoires. En raison de la différence entre l'heure de l'événement de notification de fichier et l'heure de modification du fichier, Auto Loader peut obtenir deux horodatages différents et donc ingérer le même fichier deux fois, même lorsque le fichier n'est écrit qu'une seule fois.

En général, Databricks vous recommande d'utiliser Auto Loader pour ingérer uniquement des fichiers immuables et éviter de définir cloudFiles.allowOverwrites. Si cela ne répond pas à vos exigences, contactez l’équipe de votre 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 efficaces de détection de fichiers et les capacités d’évolution des schémas d’Auto Loader font de ce dernier la méthode recommandée pour l’ingestion incrémentielle des données.

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 Qu’est-ce que le mode de notification de fichier Auto Loader ?

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 les API du fournisseur de 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. Au cours de chaque micro-batch, les changements de schéma sont évalués à la volée et vous n'avez donc pas à vous soucier des pertes de performance. 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 de l'ingestion des données lors de l'utilisation de l'inférence de schéma avec 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 stream. 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.