Compartir vía


VACUUM

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Quite los archivos sin usar de un directorio de tabla.

Nota:

Este comando funciona de forma diferente en función de si trabaja en una tabla de Delta o de Apache Spark.

Vaciado de una tabla delta

Vaciado recurrente de 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. VACUUMomitirá 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 se eliminan según el momento en que se hayan quitado lógicamente del registro de transacciones y las horas de retención de Delta, no de sus marcas de tiempo de modificación en el sistema de almacenamiento. El umbral predeterminado es de 7 días.

En las tablas de Delta, Azure Databricks no desencadena automáticamente operaciones VACUUM.

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.

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.

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.

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');

Parámetros

  • table_name

    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.

  • DRY RUN

    Devuelve una lista de hasta 1000 archivos que se van a eliminar.

  • FULL o LITE

    Se aplica a:marcado de sí Databricks SQL marcado de sí 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 completar VACUUM LITE porque se ha eliminado un registro Delta, se produce una excepción de DELTA_CANNOT_VACUUM_LITE.

    El valor predeterminado es FULL.

Vaciado de una tabla no delta

Se vacían de forma recursiva los directorios asociados a la tabla no delta y se quitan los archivos no confirmados anteriores a un umbral de retención. El umbral predeterminado es de 7 días.

En las tablas de no Delta, Azure Databricks desencadena automáticamente operaciones VACUUM a medida que se escriben los datos.

Sintaxis

VACUUM table_name [RETAIN num HOURS]

Parámetros

  • table_name

    Identifica una tabla existente por nombre o ruta.

  • RETAIN num HOURS

    Umbral de retención.