Nettoyer les fichiers traités avec Auto Loader

Note

cloudFiles.cleanSource est disponible en Databricks Runtime 16.4 et versions ultérieures.

Utilisez cloudFiles.cleanSource pour déplacer ou supprimer des fichiers du répertoire source après leur traitement. Supprimer les fichiers traités réduit les coûts de stockage et raccourcit la durée des futures opérations de listage.

Mode Description
OFF (valeur par défaut) Les fichiers du répertoire source ne sont ni déplacés ni supprimés.
MOVE Les fichiers du répertoire source sont déplacés vers le chemin spécifié par cloudFiles.cleanSource.moveDestination après la durée de conservation (par défaut 30 jours) définie par les cloudFiles.cleanSource.retentionDuration écoulements.
DELETE Les fichiers du répertoire source sont supprimés après la durée de conservation (par défaut 30 jours) définie par les cloudFiles.cleanSource.retentionDuration écoulements.
Option supplémentaire Default Valeurs valides Description
cloudFiles.cleanSource.retentionDuration 30 days Chaîne CalendarInterval telle que 14 days, 2 weeksou 1 month Délai d’attente avant que les fichiers traités ne deviennent candidats à un nettoyage avec Clean Source. Doit être supérieur à 7 jours pour DELETE. Aucune restriction minimale pour MOVE.
cloudFiles.cleanSource.waitForCompletion false true, false Cette option est disponible dans Databricks Runtime 19 et versions ultérieures.
Clean source est par défaut une opération de meilleur effort. Si le flux termine le traitement des fichiers avant que le code source propre ne termine de déplacer ou supprimer des fichiers, l’opération du code source propre est terminée. Le réglage cloudFiles.cleanSource.waitForCompletion force le flux à rester actif jusqu’à ce que le code source propre ait fini de déplacer ou supprimer les fichiers. Cela peut augmenter le temps d’exécution du flux s’il y a beaucoup de fichiers à supprimer.
Cela ne s’applique que lorsque le flux se termine seul (par exemple, un availableNow déclencheur qui vide tous les fichiers). Arrêter ou annuler manuellement le flux met fin immédiatement à l’opération de source propre, même lorsque cette option est activée.
cloudFiles.cleanSource.moveDestination None Un chemin de volume de stockage cloud ou de catalogue Unity Chemin d’accès pour archiver des fichiers traités lorsque cloudFiles.cleanSource est défini sur MOVE. Il peut s’agir d’un chemin de stockage cloud ou d’un chemin de volume du catalogue Unity (par exemple). /Volumes/my_catalog/my_schema/my_volume/archive/
L’emplacement de déplacement doit :
  • Ne pas être un enfant du répertoire source. Si vous placez la destination de déplacement dans le répertoire source, les fichiers archivés sont ingérés à nouveau.
  • Être dans le même emplacement externe, volume ou montage DBFS que la source. Les déplacements entre compartiments et entre conteneurs ne sont pas pris en charge et entraînent une erreur.

Le chargeur automatique doit disposer d’autorisations d’écriture dans ce répertoire.

Considérations avant d’activer cloudFiles.cleanSource

  • Azure Databricks ne recommande pas d’utiliser cette option lorsque plusieurs flux consomment des données provenant du même répertoire source. Le flux le plus rapide nettoie les fichiers, donc les flux plus lents ne les consomment jamais.
  • L’activation de cette fonctionnalité nécessite que le chargeur automatique conserve un état supplémentaire dans son point de contrôle, ce qui entraîne une surcharge de performances, mais permet une observabilité améliorée par le biais de la cloud_files_state fonction table. Consultez cloud_files_stateTVF.
  • Le code source propre utilise le paramètre actuel pour décider s’il le MOVE fait ou DELETE un fichier donné. Par exemple, supposons que le paramètre était MOVE lorsque le fichier a été traité à l’origine, mais qu’il a été modifié DELETE lorsque le fichier est devenu candidat pour le nettoyage 30 jours plus tard. Dans ce cas, un code source propre supprime le fichier.
  • Les fichiers ne sont pas assurés d’être nettoyés dès l’expiration cloudFiles.cleanSource.retentionDuration . Pour maintenir les coûts bas, Auto Loader nettoie les fichiers en même temps que le traitement du flux et se termine dès que le traitement du flux est terminé ou terminé. Les fichiers qui étaient candidats à nettoyage, mais qui n’ont pas pu être nettoyés pendant le traitement du flux, sont récupérés la prochaine fois qu’Auto Loader s’exécute.

Notes sur la source propre

  • Clean Source ne s’exécute que s’il y a un lot de fichiers à traiter. Ce n’est pas un processus en arrière-plan qui fonctionne indépendamment de l’ingestion. S’il n’y a pas de nouveaux fichiers à ingérer dans le répertoire source, le code source propre ne démarre pas pour l’exécution du flux en cours. En conséquence, si un flux cesse de recevoir de nouveaux fichiers, les fichiers ayant déjà dépassé leur durée de conservation ne sont pas nettoyés avant qu’un flux ultérieur ne traite pas un nouveau lot.

    Cette exigence de lot s’applique indépendamment de cloudFiles.cleanSource.waitForCompletion. Cette option ne permet au stream de rester vivant que le temps de terminer un nettoyage en cours en une seule partie. Il ne démarre pas la source propre lorsqu’il n’y a pas de lot à traiter.

  • Si un fichier est ingéré lors de la N-ième exécution du flux, le commit_time pour le fichier est défini sur la série N+1 du flux. commit_time doit être défini avant qu’une source propre puisse déterminer si un fichier est éligible à déplacer ou à supprimer, afin qu’un fichier puisse devenir candidat au nettoyage soit l’exécution du flux N+2.

  • Le cadre commit_time est nécessaire mais pas suffisant. Un fichier n’est effacé qu’une fois sa durée de conservation écoulée, mesurée à partir de son commit_timefichier . Par exemple, avec un défaut cloudFiles.cleanSource.retentionDuration de 30 jours, un fichier traité aujourd’hui n’est pas éligible au nettoyage avant 30 jours après sa commit_time définition. Cela est vrai quel que soit le nombre de ruisseaux qui se produisent entre les deux. Les deux conditions doivent être remplies avant que le fichier ne soit déplacé ou supprimé.