Aller au contenu principal

Nettoyer les fichiers traités avec Auto Loader

remarque

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

OFF (default)

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 l’expiration de la durée de conservation (default 30 jours) définie par cloudFiles.cleanSource.retentionDuration.

DELETE

Les fichiers du répertoire source sont supprimés une fois la durée de conservation (30 jours par default) définie par cloudFiles.cleanSource.retentionDuration écoulée.

Mode

Description

OFF (default)

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 l’expiration de la durée de conservation (default 30 jours) définie par cloudFiles.cleanSource.retentionDuration.

DELETE

Les fichiers du répertoire source sont supprimés une fois la durée de conservation (30 jours par default) définie par cloudFiles.cleanSource.retentionDuration écoulée.

Option supplémentaire

Par défaut

Valeurs valides

Description

cloudFiles.cleanSource.retentionDuration

30 days

Une chaîne CalendarInterval telle que 14 days, 2 weeks ou 1 month

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 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 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 cloudFiles.cleanSource.waitForCompletion force le Stream à rester actif jusqu'à ce que clean source ait fini de déplacer ou de supprimer les fichiers. Cela peut augmenter la durée d'exécution du Stream s'il y a beaucoup de fichiers à supprimer.

Ceci s’applique uniquement lorsque le stream se termine de lui-même (par exemple, un Trigger availableNow vidant tous les fichiers). L’arrêt ou l’annulation manuelle du stream met fin immédiatement à l’opération de clean source, même lorsque cette option est activée.

cloudFiles.cleanSource.moveDestination

Aucun

Un chemin d'accès de stockage cloud ou de volume Unity Catalog

Chemin d'archivage 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 Unity Catalog (par exemple, /Volumes/my_catalog/my_schema/my_volume/archive/).

L’emplacement de déplacement doit :

  • Ne pas être un sous-répertoire du répertoire source. Si vous placez la destination de déplacement à l’intérieur du répertoire source, les fichiers archivés sont ingérés à nouveau.
  • Se trouver dans le même emplacement externe, volume ou montage DBFS que la source. Les déplacements entre buckets et entre conteneurs ne sont pas pris en charge et entraînent une erreur.

Auto Loader doit disposer des autorisations d’écriture pour ce répertoire.

Option supplémentaire

Par défaut

Valeurs valides

Description

cloudFiles.cleanSource.retentionDuration

30 days

Une chaîne CalendarInterval telle que 14 days, 2 weeks ou 1 month

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 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 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 cloudFiles.cleanSource.waitForCompletion force le Stream à rester actif jusqu'à ce que clean source ait fini de déplacer ou de supprimer les fichiers. Cela peut augmenter la durée d'exécution du Stream s'il y a beaucoup de fichiers à supprimer.

Ceci s’applique uniquement lorsque le stream se termine de lui-même (par exemple, un Trigger availableNow vidant tous les fichiers). L’arrêt ou l’annulation manuelle du stream met fin immédiatement à l’opération de clean source, même lorsque cette option est activée.

cloudFiles.cleanSource.moveDestination

Aucun

Un chemin d'accès de stockage cloud ou de volume Unity Catalog

Chemin d'archivage 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 Unity Catalog (par exemple, /Volumes/my_catalog/my_schema/my_volume/archive/).

L’emplacement de déplacement doit :

  • Ne pas être un sous-répertoire du répertoire source. Si vous placez la destination de déplacement à l’intérieur du répertoire source, les fichiers archivés sont ingérés à nouveau.
  • Se trouver dans le même emplacement externe, volume ou montage DBFS que la source. Les déplacements entre buckets et entre conteneurs ne sont pas pris en charge et entraînent une erreur.

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 MOVE ou DELETE un fichier donné. Par exemple, supposons que le paramètre était MOVE lorsque le fichier a été initialement traité, mais qu’il a été remplacé par DELETE lorsque 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_time du fichier est défini lors de la N+1-ième exécution de Stream. commit_time doit ê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_time est 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 son commit_time. Par exemple, avec la valeur cloudFiles.cleanSource.retentionDuration par default de 30 jours, un fichier traité aujourd’hui n’est pas éligible au nettoyage avant 30 jours après la définition de son commit_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é.