Limpar arquivos processados com o Auto Loader
cloudFiles.cleanSource está disponível no Databricks Runtime 16.4 e acima.
Use cloudFiles.cleanSource para mover ou excluir arquivos do diretório de origem após serem processados. A remoção de arquivos processados reduz os custos de armazenamento e encurta a duração de futuras operações de listagem.
Mode | Descrição |
|---|---|
| Os arquivos no diretório de origem não são movidos ou excluídos. |
| Os arquivos no diretório de origem são movidos para o caminho especificado por |
| Os arquivos no diretório de origem são excluídos após o término da duração de retenção (default de 30 dias) definida por |
Opção adicional | Padrão | Valores válidos | Descrição |
|---|---|---|---|
|
| Uma string CalendarInterval como | Quantidade de tempo a aguardar antes que os arquivos processados se tornem candidatos à limpeza com a origem de limpeza. Deve ser maior que 7 dias para |
|
|
| Esta opção está disponível no Databricks Runtime 19 e acima. A origem limpa é, por default, uma operação de melhor esforço. Se a transmissão concluir o processamento de arquivos antes que a origem limpa termine de mover ou excluir arquivos, a operação de origem limpa será encerrada. Definir Isso só se aplica quando a transmissão é concluída por conta própria (por exemplo, um trigger |
| Nenhuma | Um caminho de armazenamento em nuvem ou de volume do Unity Catalog | Caminho para arquivar arquivos processados quando O local de movimentação deve:
O Auto Loader deve ter permissões de gravação para este diretório. |
Considerações antes de habilitar cloudFiles.cleanSource
- O Databricks não recomenda o uso desta opção quando várias transmissões consomem dados do mesmo diretório de origem. A transmissão mais rápida limpa os arquivos, portanto, as transmissões mais lentas nunca os ingerem.
- Habilitar esse recurso exige que o Auto Loader mantenha um estado adicional em seu checkpoint, o que gera sobrecarga de desempenho, mas permite uma observabilidade aprimorada por meio da função de valor de tabela
cloud_files_state. Consulte função de valor de tabelacloud_files_state. - A origem de limpeza usa a configuração atual para decidir se deve
MOVEouDELETEum determinado arquivo. Por exemplo, suponha que a configuração eraMOVEquando o arquivo foi processado originalmente, mas foi alterada paraDELETEquando o arquivo se tornou um candidato à limpeza 30 dias depois. Nesse caso, a origem de limpeza exclui o arquivo. - Não há garantia de que os arquivos sejam limpos assim que o
cloudFiles.cleanSource.retentionDurationexpirar. Para manter os custos baixos, o Auto Loader limpa os arquivos simultaneamente ao processamento da transmissão e é encerrado assim que o processamento da transmissão é concluído ou interrompido. Os arquivos que eram candidatos à limpeza, mas que não puderam ser limpos durante o processamento da transmissão, são coletados na próxima vez que o Auto Loader for executado.
Notas sobre a origem limpa
-
A limpeza da fonte só ocorre se houver um lote de arquivos para processar. Não é um processo em segundo plano que ocorre independentemente da ingestão. Se não houver novos arquivos para ingerir no diretório de origem, a limpeza da fonte não começa para a execução de transmissão atual. Como resultado, se uma transmissão parar de receber novos arquivos, os arquivos que já ultrapassaram sua duração de retenção não serão limpos até que uma execução de transmissão posterior processe um novo lote.
Este requisito de lote se aplica independentemente de
cloudFiles.cleanSource.waitForCompletion. Essa opção apenas mantém a transmissão ativa por tempo suficiente para concluir uma limpeza em andamento dentro de uma execução. Ele não inicia a fonte de limpeza quando não há nenhum lote para processar. -
Se um arquivo for ingerido na N-ésima execução de transmissão, o
commit_timepara o arquivo será definido na execução de transmissão N+1.commit_timedeve ser definido antes que a origem de limpeza possa determinar se um arquivo é elegível para movimentação ou exclusão, portanto, o momento mais cedo em que um arquivo pode se tornar um candidato para limpeza é na execução de transmissão N+2. -
Definir
commit_timeé necessário, mas não suficiente. Um arquivo só é limpo após a sua duração de retenção ter decorrido, medida a partir decommit_time. Por exemplo, com ocloudFiles.cleanSource.retentionDurationdefault de 30 dias, um arquivo processado hoje não é elegível para limpeza até 30 dias após a definição de seucommit_time. Isso é válido independentemente de quantas execuções de transmissão ocorram nesse intervalo. Ambas as condições devem ser atendidas antes que o arquivo seja movido ou excluído.