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.
Se aplica a: Databricks SQL
Databricks Runtime
Quite los archivos sin usar de un directorio de tabla.
Nota
Este comando funciona de forma diferente según si estás trabajando en una tabla Delta, Apache Spark o Apache Iceberg.
Vaciado de una tabla delta
Vacía de forma recursiva los directorios asociados a la tabla Delta. Para obtener detalles completos y limitaciones, consulte Eliminación de archivos de datos sin usar con vacío.
VACUUM
quita todos los archivos del directorio de tabla que no están administrados por Delta, así como los archivos de datos que ya no están en el estado más reciente del registro de transacciones de la tabla y son anteriores a un umbral de retención. VACUUM
omitirá todos los directorios que comienzan por un carácter de subrayado (_
), que incluye _delta_log
. La creación de particiones de la tabla en una columna que comienza con un carácter de subrayado es una excepción a esta regla; VACUUM
examina todas las particiones válidas incluidas en la tabla Delta de destino. Los archivos de datos de la tabla Delta se eliminan teniendo en cuenta el tiempo desde que han sido eliminados lógicamente del registro de transacciones de Delta, junto con las horas de retención establecidas, y no sus marcas de tiempo de modificación en el sistema de almacenamiento. El umbral predeterminado es de 7 días.
Si se ejecuta VACUUM
en una tabla de Delta, se pierde la capacidad de retroceder en el tiempo a una versión anterior al período de retención de datos especificado.
Si la optimización predictiva está habilitada, Azure Databricks desencadena automáticamente la VACUUM
operación como parte de su proceso de optimización. No es necesario ejecutar VACUUM
manualmente en la mayoría de los casos.
Advertencia
Se recomienda establecer un intervalo de retención de al menos siete días, ya que es posible que todavía se usen instantáneas antiguas y archivos sin confirmar en operaciones de lectura o escritura simultáneas en la tabla. Si VACUUM
limpia los archivos activos, las operaciones de lectura simultáneas pueden producir un error o, lo que es peor, las tablas pueden resultar dañadas cuando VACUUM
elimina archivos que todavía no se han confirmado. Debe elegir un intervalo que sea más largo que la transacción simultánea de ejecución más prolongada y el período de mayor retraso de una secuencia con respecto a la actualización más reciente de la tabla.
Delta Lake tiene una comprobación de seguridad para evitar que ejecute un comando VACUUM
peligroso. En Databricks Runtime, si está seguro de que en esta tabla no se realiza ninguna operación que tarde más tiempo que el intervalo de retención que planea especificar, puede desactivar esta comprobación de seguridad estableciendo la propiedad de configuración de Spark spark.databricks.delta.retentionDurationCheck.enabled
en false
.
Vaciar una tabla de Apache Iceberg
Quita de forma recursiva los archivos no con referencia de los directorios asociados a la tabla Apache Iceberg.
- Solo se admite
VACUUM
si no hay una cláusulaRETAIN
para las tablas de Iceberg. - El período de retención se fija a 7 días.
Si la optimización predictiva está habilitada, Azure Databricks desencadena automáticamente la VACUUM
operación como parte de su proceso de optimización. No es necesario ejecutar VACUUM
manualmente en la mayoría de los casos.
Sintaxis
VACUUM table_name { { FULL | LITE } | RETAIN num HOURS | DRY RUN } [...]
En Databricks Runtime 16.0 y versiones anteriores RETAIN num HOURS
debe preceder a DRY RUN
en la sintaxis.
Parámetros
-
Identifica una tabla de Delta existente. El nombre no debe incluir una especificación temporal ni una especificación de opciones .
RETAIN num HOURS
Umbral de retención. Si el período de retención especificado supera
delta.deletedFileRetentionDuration
, se usa el período de retención de la tabla.DRY RUN
Devuelve una lista de hasta 1000 archivos que se van a eliminar.
FULL
oLITE
se aplica a:
Databricks SQL
Databricks Runtime 16.1 y versiones posteriores
FULL
ejecuta la operación de vacío en modo Completo. Esto elimina los archivos de datos fuera de la duración de retención y todos los archivos en el directorio de la tabla no referenciados por la tabla.LITE
ejecuta la operación de vacío en el modo Lite. En lugar de buscar todos los archivos en el directorio de la tabla,VACUUM
usa el registro de transacciones Delta para identificar y quitar archivos a los que ya no hace referencia ninguna versión de tabla dentro de la duración de retención. Si no se puede completarVACUUM LITE
porque se ha eliminado un registro Delta, se produce una excepción de DELTA_CANNOT_VACUUM_LITE.El valor predeterminado es
FULL
.
Importante
El período de retención del comando VACUUM
viene determinado por la propiedad de tabla delta.deletedFileRetentionDuration
, que tiene como valor predeterminado 7 días.
Esto significa que VACUUM
quita los archivos de datos a los que ya no ha hecho referencia una versión de la tabla Delta en los últimos 7 días.
Para conservar los datos durante un período más prolongado, por ejemplo, para permitir viajes en el tiempo de mayor duración, establezca esta propiedad de la tabla en un valor más alto.
En el ejemplo siguiente se muestra cómo establecer este umbral en 30 días:
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
Vaciar otras tablas
Vacía los directorios asociados a tablas que no son Delta ni Iceberg de forma recursiva, quitando los archivos no confirmados más antiguos que el umbral de retención. El umbral predeterminado es de 7 días.
En estas tablas de Spark, Azure Databricks desencadena automáticamente operaciones VACUUM
a medida que se escriben los datos.
Sintaxis
VACUUM table_name [RETAIN num HOURS]
Parámetros
-
Identifica una tabla existente por nombre o ruta.
RETAIN num HOURS
Umbral de retención.