Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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:
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_statefunzione con valori di tabella. Vederecloud_files_statefunzione con valori di tabella. - Clean source utilizza l'impostazione corrente per decidere se farlo
MOVEoDELETEun dato file. Si supponga, ad esempio, che l'impostazione fosseMOVEquando il file è stato elaborato originariamente, ma è stato modificato inDELETEquando 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.retentionDurationscade. 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_timeper il file viene impostato sull'esecuzione N+1 del flusso N+1.commit_timedeve 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 suocommit_timefile . Ad esempio, con il defaultcloudFiles.cleanSource.retentionDurationdi 30 giorni, un file elaborato oggi non è idoneo alla pulizia fino a 30 giorni dopo la suacommit_timeimpostazione. 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.