Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Note
cloudFiles.cleanSource está disponível em Databricks Runtime 16.4 e superiores.
cloudFiles.cleanSource Use para mover ou eliminar ficheiros do diretório de origem depois de processados. Remover ficheiros processados reduz os custos de armazenamento e encurta a duração das futuras operações de listagem.
| Mode | Description |
|---|---|
OFF (predefinição) |
Os ficheiros no diretório de origem não são movidos nem eliminados. |
MOVE |
Os ficheiros no diretório de origem são movidos para o caminho especificado por cloudFiles.cleanSource.moveDestination após a duração de retenção (padrão de 30 dias) definida pelos cloudFiles.cleanSource.retentionDuration elapses. |
DELETE |
Os ficheiros no diretório de origem são eliminados após a duração de retenção (padrão de 30 dias) definida pelo cloudFiles.cleanSource.retentionDuration decorrido. |
| Opção adicional | Default | Valores válidos | Description |
|---|---|---|---|
cloudFiles.cleanSource.retentionDuration |
30 days |
Uma cadeia CalendarInterval como 14 days, 2 weeks, ou 1 month |
Tempo a esperar até que os ficheiros processados se tornem candidatos à limpeza com código limpo. Deve ser superior a 7 dias para DELETE. Nenhuma restrição mínima para MOVE. |
cloudFiles.cleanSource.waitForCompletion |
false |
true, false |
Esta opção está disponível no Databricks Runtime 19 e superiores. A fonte limpa é, por defeito, uma operação de melhor esforço. Se o fluxo terminar de processar ficheiros antes de o código de código limpo terminar de mover ou eliminar ficheiros, a operação de fonte limpa é terminada. A definição cloudFiles.cleanSource.waitForCompletion obriga a transmissão a manter-se ativa até que o código limpo termine de mover ou eliminar ficheiros. Isto pode aumentar o tempo de execução do stream se houver muitos ficheiros para eliminar.Isto só se aplica quando o fluxo termina sozinho (por exemplo, um availableNow gatilho que drena todos os ficheiros). Parar ou cancelar manualmente o fluxo termina imediatamente a operação da fonte limpa, mesmo quando esta opção está definida. |
cloudFiles.cleanSource.moveDestination |
None | Um caminho de armazenamento em nuvem ou de volumes do Unity Catalog | Caminho para guardar ficheiros processados quando cloudFiles.cleanSource está configurado para MOVE. Isto pode ser um caminho de armazenamento na cloud ou um caminho de volume do Unity Catalog (por exemplo, /Volumes/my_catalog/my_schema/my_volume/archive/).O local de mudança deve:
Auto Loader deve ter permissões de gravação para este diretório. |
Considerações antes de permitir cloudFiles.cleanSource
- O Azure Databricks não recomenda usar esta opção quando múltiplos fluxos consomem dados do mesmo diretório de origem. O stream mais rápido limpa os ficheiros, por isso os streams mais lentos nunca os ingerem.
- Ativar esta funcionalidade requer que o Auto Loader mantenha um estado adicional no seu checkpoint, o que gera sobrecarga de desempenho mas permite uma melhor observabilidade através da
cloud_files_statefunção de valores de tabela. Consultecloud_files_statefunção de valor de tabela. - O código limpo usa a definição atual para decidir se o faz
MOVEouDELETEum dado ficheiro. Por exemplo, suponha que a configuração foiMOVEquando o arquivo foi originalmente processado, mas foi alterado paraDELETEquando o arquivo se tornou um candidato para limpeza 30 dias depois. Neste caso, uma fonte limpa apaga o ficheiro. - Não é garantido que os ficheiros sejam limpos assim que expiram
cloudFiles.cleanSource.retentionDuration. Para manter os custos baixos, o Auto Loader limpa os ficheiros em simultâneo com o processamento do fluxo e termina assim que o processamento do fluxo termina ou termina. Ficheiros que eram candidatos à limpeza, mas que não puderam ser limpos durante o processamento do fluxo, são recolhidos na próxima vez que o Auto Loader for executado.
Notas sobre Clean Source
O código de código limpo só corre se houver um lote de ficheiros para processar. Não é um processo em segundo plano que funcione independentemente da ingestão. Se não houver novos ficheiros para ingerir no diretório de origem, o código limpo não inicia para a execução atual do fluxo. Como resultado, se um fluxo deixar de receber novos ficheiros, os ficheiros que já passaram a sua duração de retenção não são limpos até que uma sequência posterior processe um novo lote.
Este requisito de lote aplica-se independentemente de
cloudFiles.cleanSource.waitForCompletion. Essa opção só mantém a transmissão viva tempo suficiente para terminar uma limpeza em curso durante uma corrida. Não arranca de origem limpa quando não há lote para processar.Se um ficheiro for ingerido na enésima corrida do fluxo, o
commit_timepara o ficheiro é definido na execução do fluxo N+1.commit_timedeve ser definido antes que a fonte limpa possa determinar se um ficheiro é elegível para mover ou eliminar, pelo que o mais cedo que um ficheiro pode tornar-se candidato à limpeza é a execução do fluxo N+2.O cenário
commit_timeé necessário, mas não suficiente. Um ficheiro só é limpo depois de a sua duração de retenção ter terminado, medida a partir do seucommit_timearquivo . Por exemplo, com o padrãocloudFiles.cleanSource.retentionDurationde 30 dias, um ficheiro processado hoje não é elegível para limpeza até 30 dias depois de tercommit_timesido definido. Isto mantém-se independentemente do número de corridas de ribeiros que ocorrem entre elas. Ambas as condições devem ser cumpridas antes de o ficheiro ser movido ou eliminado.