Nettoyer les fichiers traités avec Auto Loader
cloudFiles.cleanSource est disponible dans Databricks Runtime 16.4 et versions ultérieures.
Utilisez cloudFiles.cleanSource pour déplacer ou supprimer des fichiers du répertoire source une fois qu’ils ont été traités. La suppression des fichiers traités réduit les coûts de stockage et raccourcit la durée des futures opérations de listage.
Mode | Description |
|---|---|
| Les fichiers du répertoire source ne sont ni déplacés ni supprimés. |
| Les fichiers du répertoire source sont déplacés vers le chemin spécifié par |
| Les fichiers du répertoire source sont supprimés une fois la durée de conservation (30 jours par default) définie par |
Option supplémentaire | Par défaut | Valeurs valides | Description |
|---|---|---|---|
|
| Une chaîne CalendarInterval telle que | Durée d'attente avant que les fichiers traités ne deviennent des candidats au nettoyage avec clean source. Doit être supérieur à 7 jours pour |
|
|
| Cette option est disponible dans Databricks Runtime 19 et versions ultérieures. Clean source est default une opération effectuée au mieux. Si le Stream termine le traitement des fichiers avant que clean source n'ait fini de déplacer ou de supprimer les fichiers, l'opération clean source est interrompue. Le paramétrage de Ceci s’applique uniquement lorsque le stream se termine de lui-même (par exemple, un Trigger |
| Aucun | Un chemin d'accès de stockage cloud ou de volume Unity Catalog | Chemin d'archivage des fichiers traités lorsque L’emplacement de déplacement doit :
Auto Loader doit disposer des autorisations d’écriture pour ce répertoire. |
Considérations avant l'activation cloudFiles.cleanSource
- Databricks ne recommande pas d'utiliser cette option lorsque plusieurs Stream consomment des données à partir du même répertoire source. Le stream le plus rapide nettoie les fichiers, de sorte que les streams plus lents ne les ingèrent jamais.
- L'activation de cette fonctionnalité nécessite qu'Auto Loader conserve un état supplémentaire dans son point de contrôle, ce qui entraîne une surcharge de performance mais permet une meilleure observabilité via la fonction à valeur tabulaire
cloud_files_state. Voir la fonction à valeur tabulairecloud_files_state. - Clean source utilise le paramètre actuel pour décider s’il faut
MOVEouDELETEun fichier donné. Par exemple, supposons que le paramètre étaitMOVElorsque le fichier a été initialement traité, mais qu’il a été remplacé parDELETElorsque le fichier est devenu un candidat au nettoyage 30 jours plus tard. Dans ce cas, clean source supprime le fichier. - Il n'est pas garanti que les fichiers soient nettoyés dès l'expiration de
cloudFiles.cleanSource.retentionDuration. Pour réduire les coûts, Auto Loader nettoie les fichiers simultanément au traitement du stream et se termine dès que le traitement du stream est terminé ou interrompu. Les fichiers qui étaient candidats au nettoyage, mais qui n'ont pas pu être nettoyés pendant le traitement du stream, sont récupérés lors de la prochaine exécution d'Auto Loader.
Notes sur clean source
-
Clean source ne s’exécute que s’il existe un batch de fichiers à traiter. Il ne s’agit pas d’un processus d’arrière-plan qui s’exécute indépendamment de l’ingestion. S’il n’y a pas de nouveaux fichiers à ingérer dans le répertoire source, clean source ne start pas pour l’exécution actuelle du Stream. Par conséquent, si un Stream cesse de recevoir de nouveaux fichiers, les fichiers ayant déjà dépassé leur durée de rétention ne sont pas nettoyés tant qu’une exécution ultérieure du Stream ne traite pas un nouveau batch.
Cette exigence de batch s’applique indépendamment de
cloudFiles.cleanSource.waitForCompletion. Cette option maintient uniquement le stream actif assez longtemps pour terminer un nettoyage en cours au sein d’une exécution. Il ne start pas le clean source lorsqu’il n’y a aucun batch à traiter. -
Si un fichier est ingéré lors de la N-ième exécution de Stream, le
commit_timedu fichier est défini lors de la N+1-ième exécution de Stream.commit_timedoit être défini avant que la source propre puisse déterminer si un fichier est éligible au déplacement ou à la suppression ; par conséquent, le moment le plus tôt où un fichier peut devenir un candidat au nettoyage est la N+2-ième exécution de Stream. -
Le paramètre
commit_timeest nécessaire mais pas suffisant. Un fichier n’est nettoyé qu’une fois sa durée de rétention écoulée, mesurée à partir de soncommit_time. Par exemple, avec la valeurcloudFiles.cleanSource.retentionDurationpar default de 30 jours, un fichier traité aujourd’hui n’est pas éligible au nettoyage avant 30 jours après la définition de soncommit_time. Ceci reste vrai quel que soit le nombre d’exécutions de Stream qui se produisent entre-temps. Les deux conditions doivent être remplies avant que le fichier ne soit déplacé ou supprimé.