Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
cloudFiles.cleanSource está disponible en Databricks Runtime 16.4 y superiores.
Se usa cloudFiles.cleanSource para mover o eliminar archivos del directorio fuente después de procesarlos. Eliminar archivos procesados reduce los costes de almacenamiento y acorta la duración de futuras operaciones de listado.
| Mode | Description |
|---|---|
OFF (valor predeterminado) |
Los archivos del directorio fuente no se mueven ni se eliminan. |
MOVE |
Los archivos en el directorio fuente se mueven a la ruta especificada por cloudFiles.cleanSource.moveDestination después de la duración de retención (por defecto 30 días) definida por cloudFiles.cleanSource.retentionDuration los transcurridos. |
DELETE |
Los archivos en el directorio fuente se eliminan tras la duración de conservación (por defecto 30 días) definida por cloudFiles.cleanSource.retentionDuration los transcurridos. |
| Opción adicional | Predeterminado | Valores válidos | Description |
|---|---|---|---|
cloudFiles.cleanSource.retentionDuration |
30 days |
Una cadena CalendarInterval , como 14 days, 2 weekso 1 month |
Tiempo de espera antes de que los archivos procesados se conviertan en candidatos para limpieza con código limpio. Debe ser mayor que 7 días para DELETE. No hay ninguna restricción mínima para MOVE. |
cloudFiles.cleanSource.waitForCompletion |
false |
true, false |
Esta opción está disponible en Databricks Runtime 19 en adelante. Clean source es por defecto una operación de mejor esfuerzo. Si el flujo termina de procesar archivos antes de que el código fuente limpio termine de mover o eliminar archivos, la operación de fuente limpia se termina. Configurar cloudFiles.cleanSource.waitForCompletion obliga al stream a mantenerse vivo hasta que la fuente limpia termina de mover o eliminar archivos. Esto puede aumentar el tiempo de ejecución del stream si hay muchos archivos que eliminar.Esto solo se aplica cuando el flujo se completa por sí solo (por ejemplo, un availableNow disparador que drena todos los archivos). Detener o cancelar manualmente la transmisión termina inmediatamente la operación de fuente limpia, incluso cuando esta opción está activada. |
cloudFiles.cleanSource.moveDestination |
Ninguno | Una ruta de acceso de volumen del catálogo de Unity o almacenamiento en la nube | Ruta de acceso para archivar los archivos procesados cuando cloudFiles.cleanSource se establece en MOVE. Puede ser una ruta de acceso de almacenamiento en la nube o una ruta de acceso de volumen del catálogo de Unity (por ejemplo, /Volumes/my_catalog/my_schema/my_volume/archive/).La ubicación de movimiento debe:
Auto Loader debe tener permisos de escritura en este directorio. |
Consideraciones antes de habilitar cloudFiles.cleanSource
- Azure Databricks no recomienda usar esta opción cuando varios flujos consumen datos del mismo directorio fuente. El stream más rápido limpia los archivos, así que los más lentos nunca los ingieren.
- La habilitación de esta característica requiere que el cargador automático mantenga un estado adicional en su punto de control, lo que incurre en sobrecarga de rendimiento, pero permite una observabilidad mejorada a través de la
cloud_files_statefunción con valores de tabla. Consultecloud_files_statefunción con valores de tabla. - Código fuente limpio utiliza la configuración actual para decidir si hacerlo
MOVEoDELETEun archivo dado. Por ejemplo, supongamos que la configuración eraMOVEcuando el archivo se procesó originalmente, pero se cambió aDELETEcuando el archivo se convirtió en candidato para la limpieza de 30 días después. En este caso, el código fuente limpio elimina el archivo. - No se garantiza que los archivos se limpien en cuanto
cloudFiles.cleanSource.retentionDurationexpire. Para mantener los costes bajos, Auto Loader limpia los archivos simultáneamente con el procesamiento de flujo y termina tan pronto como el procesamiento de flujo termina o se termina. Los archivos que eran candidatos para la limpieza, pero que no pudieron limpiarse durante el procesamiento del flujo, se recogen la siguiente vez que se ejecuta Auto Loader.
Notas sobre la fuente limpia
El código fuente limpio solo se ejecuta si hay un lote de archivos que procesar. No es un proceso en segundo plano que se ejecute independientemente de la ingestión. Si no hay archivos nuevos que ingerir en el directorio fuente, el código fuente limpio no se inicia para la ejecución actual del flujo. Como resultado, si un flujo deja de recibir nuevos archivos, los archivos que ya han superado su duración de retención no se limpian hasta que una secuencia posterior procesa un nuevo lote.
Este requisito de lote se aplica independientemente de
cloudFiles.cleanSource.waitForCompletion. Esa opción solo mantiene la transmisión viva el tiempo suficiente para terminar una limpieza en curso en una partida. No arranca la fuente limpia cuando no hay lote que procesar.Si un archivo se ingiere en la secuencia N, el
commit_timepara el archivo se establece en la secuencia N+1.commit_timedebe establecerse antes de que una fuente limpia pueda determinar si un archivo es elegible para mover o eliminar, de modo que lo más pronto que un archivo puede convertirse en candidato para limpieza es la ejecución del flujo N+2.La configuración
commit_timees necesaria pero no suficiente. Un archivo solo se limpia una vez que ha transcurrido su duración de retención, medida a partir de sucommit_timearchivo . Por ejemplo, con el valor predeterminadocloudFiles.cleanSource.retentionDurationde 30 días, un archivo procesado hoy no es elegible para limpieza hasta 30 días después de haberlocommit_timeconfigurado. Esto se cumple independientemente de cuántas corrientes de arroyo ocurran entre medias. Ambas condiciones deben cumplirse antes de que el archivo sea movido o eliminado.