¿Qué son los vectores de eliminación?

Los vectores de eliminación son una característica de optimización de almacenamiento que se puede habilitar en tablas de Delta Lake. De forma predeterminada, cuando se elimina una sola fila de un archivo de datos, se debe volver a escribir todo el archivo Parquet que contiene el registro. Con los vectores de eliminación habilitados para la tabla, las operaciones DELETE, UPDATE y MERGE usan vectores de eliminación para marcar las filas existentes como eliminadas o cambiadas sin volver a escribir el archivo Parquet. Las lecturas posteriores de la tabla resuelven el estado de la tabla actual aplicando las eliminaciones indicadas por los vectores de eliminación a la versión de tabla más reciente.

Databricks recomienda usar Databricks Runtime 14.3 LTS y versiones posteriores para escribir tablas con vectores de eliminación para aprovechar todas las optimizaciones. Puede leer tablas con vectores de eliminación habilitados en Databricks Runtime 12.2 LTS y versiones posteriores.

En Databricks Runtime 14.2 y versiones posteriores, las tablas con vectores de eliminación admiten la simultaneidad de nivel de fila. Vea Conflictos de escritura con simultaneidad de nivel de fila.

Nota:

Photon aprovecha los vectores de eliminación para las actualizaciones de E/S predictivas, lo que acelera las operaciones DELETE, MERGE y UPDATE. Todos los clientes que admiten la lectura de vectores de eliminación pueden leer las actualizaciones que han generado vectores de eliminación, independientemente de si estas actualizaciones se generaron mediante la E/S predictiva. Consulte Utilizar la E/S predictiva para acelerar las actualizaciones.

Habilitación de vectores de eliminación

Importante

Una configuración de administrador del área de trabajo controla si los vectores de eliminación están habilitados automáticamente para las nuevas tablas Delta. Vea Habilitación automática de vectores de eliminación.

Para habilitar los vectores de eliminación en una tabla Delta Lake, configure una propiedad de tabla Delta Lake. Puede habilitar vectores de eliminación durante la creación de tablas o modificar una tabla existente, como en los ejemplos siguientes:

CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

Advertencia

Al habilitar los vectores de borrado, se actualiza el protocolo de la tabla. Después de la actualización, la tabla no se podrá leer por clientes Delta Lake que no soporten vectores de eliminación. Consulte ¿Cómo administra Azure Databricks la compatibilidad de características de Delta Lake?.

Tanto Databricks Runtime 14.1 como en las versiones posteriores puede eliminar la característica de tabla de vectores de eliminación para habilitar la compatibilidad con otros clientes Delta. Consulte Eliminación de características de una tabla Delta.

Aplicación de cambios en los archivos de datos de Parquet

Los vectores de eliminación indican cambios en las filas, como eliminaciones temporales que modifican lógicamente los archivos de datos Parquet existentes en la tabla de Delta Lake. Estos cambios se aplican físicamente cuando los archivos de datos se vuelven a escribir, como resultado de uno de los siguientes eventos:

  • Se ejecuta un comando OPTIMIZE en la tabla.
  • La compactación automática desencadena una reescritura de un archivo de datos con un vector de eliminación.
  • REORG TABLE ... APPLY (PURGE) se ejecuta en la tabla.

Los eventos relacionados con la compactación de archivos no tienen garantías estrictas para resolver los cambios registrados en vectores de eliminación, y es posible que algunos cambios registrados en vectores de eliminación no se apliquen si los archivos de datos de destino no son candidatos para la compactación de archivos. REORG TABLE ... APPLY (PURGE) reescribe todos los archivos de datos que contienen registros con modificaciones registradas mediante vectores de eliminación. Consulte REORG TABLE.

Nota:

Es posible que los datos modificados sigan existiendo en los archivos antiguos. Puede ejecutar VACUUM para eliminar físicamente los archivos antiguos. REORG TABLE ... APPLY (PURGE) crea una nueva versión de la tabla en el momento en que se completa, que es la marca de tiempo que debe tener en cuenta para el umbral de retención de la operación VACUUM para quitar completamente los archivos eliminados. Consulte Eliminación de archivos de datos sin usar con vacío.

Compatibilidad con clientes Delta

Azure Databricks saca provecho de los vectores de eliminación a fin de impulsar la E/S predictiva para las actualizaciones en el proceso habilitado para Photon. Consulte Utilizar la E/S predictiva para acelerar las actualizaciones.

La compatibilidad con el aprovechamiento de vectores de eliminación para operaciones de lectura y escritura varía según el cliente.

En la tabla siguiente se indican las versiones de cliente necesarias para leer y escribir tablas Delta con vectores de eliminación habilitados y se especifica qué operaciones de escritura sacan provecho de los vectores de eliminación:

Remoto Vectores de eliminación de escritura Vectores de eliminación de lectura
Databricks Runtime con Photon Admite MERGE, UPDATEy DELETE mediante Databricks Runtime 12.2 LTS y versiones posteriores. Requiere Databricks Runtime 12.2 LTS o superior.
Databricks Runtime sin Photon Admite DELETE mediante Databricks Runtime 12.2 LTS y versiones posteriores. Admite UPDATE con Databricks Runtime 14.1 y versiones posteriores. Admite MERGE con Databricks Runtime 14.3 LTS y versiones posteriores. Requiere Databricks Runtime 12.2 LTS o superior.
OSS Apache Spark con OSS Delta Lake Admite DELETE mediante OSS Delta 2.4.0 y versiones posteriores. Admite UPDATE mediante OSS Delta 3.0.0 y versiones posteriores. Necesita OSS Delta 2.3.0 o versiones posteriores.
Destinatarios de Delta Sharing Las escrituras no se admiten en tablas de uso compartido Delta Databricks: Requiere DBR 14.1 o superior. Apache Spark de código abierto: Requiere delta-sharing-spark 3.1 o posterior.

Nota:

Para obtener soporte técnico en otros clientes Delta, vea la documentación de integraciones de OSS Delta Lake.

Limitaciones

  • UniForm no admite vectores de eliminación.
  • Puede habilitar vectores de eliminación para vistas materializadas, pero para deshabilitar los vectores de eliminación de una vista Materializada, debe quitar la vista Materialized y volver a crearla.
  • No se puede generar un archivo de manifiesto para una tabla con vectores de eliminación presentes. Para generar un manifiesto, ejecute REORG TABLE ... APPLY (PURGE) y asegúrese de que no se estén ejecutando operaciones de escritura simultáneas.
  • No se puede generar incrementalmente archivos de manifiesto para una tabla con vectores de eliminación activados.