Pulisci i file elaborati con Auto Loader

Note

cloudFiles.cleanSource è disponibile in Databricks Runtime 16.4 e superiori.

Da usare cloudFiles.cleanSource per spostare o cancellare file dalla directory sorgente dopo che sono stati elaborati. Rimuovere i file processati riduce i costi di archiviazione e accorcia la durata delle future operazioni di inserimento.

Mode Description
OFF (impostazione predefinita) I file nella cartella sorgente non vengono spostati né cancellati.
MOVE I file nella directory sorgente vengono spostati sul percorso specificato da cloudFiles.cleanSource.moveDestination dopo la durata di conservazione (predefinito 30 giorni) definita dagli cloudFiles.cleanSource.retentionDuration elapses.
DELETE I file nella directory sorgente vengono eliminati dopo la durata di conservazione (predefinito 30 giorni) definita dai cloudFiles.cleanSource.retentionDuration passi.
Opzione aggiuntiva Default Valori validi Description
cloudFiles.cleanSource.retentionDuration 30 days Stringa CalendarInterval , 14 daysad esempio , 2 weekso 1 month Tempo da aspettare prima che i file processati diventino candidati per la pulizia con una fonte pulita. Deve essere maggiore di 7 giorni per DELETE. Nessuna restrizione minima per MOVE.
cloudFiles.cleanSource.waitForCompletion false true, false Questa opzione è disponibile in Databricks Runtime 19 e superiori.
Clean source è di default un'operazione di miglior sforzo. Se il flusso completa l'elaborazione dei file prima che la sorgente pulita abbia finito di spostare o eliminare i file, l'operazione della sorgente pulita viene terminata. Impostare cloudFiles.cleanSource.waitForCompletion la modalità costringe lo stream a rimanere vivo finché la sorgente pulita non ha finito di spostare o cancellare i file. Questo può aumentare il tempo di esecuzione dello stream se ci sono molti file da cancellare.
Questo vale solo quando il flusso si completa da solo (ad esempio, un availableNow trigger che drena tutti i file). Interrompere o cancellare manualmente lo stream termina immediatamente l'operazione di sorgente pulita, anche quando questa opzione è impostata.
cloudFiles.cleanSource.moveDestination None Percorso del volume di Archiviazione cloud o Catalogo Unity Percorso in cui archiviare i file elaborati quando cloudFiles.cleanSource è impostato su MOVE. Può trattarsi di un percorso di archiviazione cloud o di un percorso del volume del catalogo Unity (ad esempio, /Volumes/my_catalog/my_schema/my_volume/archive/).
Il percorso di spostamento deve:
  • Non essere un elemento figlio della directory di origine. Se si inserisce la destinazione di spostamento all'interno della directory di origine, i file archiviati vengono nuovamente inseriti.
  • Trovarsi nello stesso percorso esterno, volume o montaggio DBFS dell'origine. Gli spostamenti tra bucket e contenitori diversi non sono supportati e generano un errore.

Il caricatore automatico deve disporre delle autorizzazioni di scrittura per questa directory.

Considerazioni prima di abilitare cloudFiles.cleanSource

  • Azure Databricks non consiglia di utilizzare questa opzione quando più flussi consumano dati dalla stessa directory sorgente. Lo stream più veloce ripulisce i file, quindi quelli più lenti non li ingeriscono mai.
  • L'abilitazione di questa funzionalità richiede il caricamento automatico per mantenere uno stato aggiuntivo nel relativo checkpoint, che comporta un sovraccarico delle prestazioni, ma consente una migliore osservabilità tramite la cloud_files_state funzione con valori di tabella. Vedere cloud_files_state funzione con valori di tabella.
  • Clean source utilizza l'impostazione corrente per decidere se farlo MOVE o DELETE un dato file. Si supponga, ad esempio, che l'impostazione fosse MOVE quando il file è stato elaborato originariamente, ma è stato modificato in DELETE quando il file è diventato un candidato per la pulizia 30 giorni dopo. In questo caso, una sorgente pulita elimina il file.
  • Non è garantito che i file vengano puliti non appena cloudFiles.cleanSource.retentionDuration scade. Per mantenere bassi i costi, Auto Loader elimina i file contemporaneamente all'elaborazione del flusso e termina non appena l'elaborazione del flusso è completata o terminata. I file che erano candidati per la pulizia ma che non potevano essere puliti durante l'elaborazione del flusso vengono raccolti la volta successiva che Auto Loader viene eseguito.

Note sulla fonte pulita

  • Il codice sorgente pulito funziona solo se c'è un lotto di file da elaborare. Non è un processo di background che funziona indipendentemente dall'ingestione. Se non ci sono nuovi file da ingerire nella directory sorgente, il codice sorgente pulito non si avvia per l'esecuzione attuale dello stream. Di conseguenza, se uno stream smette di ricevere nuovi file, i file che hanno già superato la loro durata di conservazione non vengono puliti fino a quando una successiva esecuzione di flusso non elabora un nuovo lotto.

    Questo requisito per il batch si applica indipendentemente da cloudFiles.cleanSource.waitForCompletion. Quell'opzione mantiene lo stream vivo solo il tempo necessario per completare una pulizia in corso entro una partita. Non avvia una fonte pulita quando non c'è un lotto da elaborare.

  • Se un file viene ingerito durante la N-esima esecuzione del flusso, il commit_time per il file viene impostato sull'esecuzione N+1 del flusso N+1. commit_time deve essere impostato prima che una sorgente pulita possa determinare se un file è idoneo per lo spostamento o la cancellazione, così che il primo momento in cui un file può diventare candidato per la pulizia è l'esecuzione del flusso N+2.

  • L'impostazione commit_time è necessaria ma non sufficiente. Un file viene pulito solo una volta che la sua durata di conservazione è scaduta, misurata dal suo commit_timefile . Ad esempio, con il default cloudFiles.cleanSource.retentionDuration di 30 giorni, un file elaborato oggi non è idoneo alla pulizia fino a 30 giorni dopo la sua commit_time impostazione. Questo vale indipendentemente da quante corse di corso d'acqua si verificano nel mezzo. Entrambe le condizioni devono essere soddisfatte prima che il file venga spostato o cancellato.