Compartir a través de


¿Qué son los vectores de eliminación?

Los vectores de eliminación son una característica de optimización de almacenamiento que 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 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 usar 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 vectores de eliminación de lectura pueden leer actualizaciones que generaron vectores de eliminación, independientemente de si la E/S predictiva generó estas actualizaciones. 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.

Si se usa la configuración del área de trabajo para controlar la habilitación automática de vectores de eliminación, en función de la opción seleccionada para los tipos de tabla, los vectores de eliminación se habilitan de forma predeterminada cuando se crea una tabla con SQL Warehouse o Databricks Runtime 14.1 o superior. Los vectores de eliminación no están habilitados de forma predeterminada cuando se crean vistas materializadas o tablas de streaming y se deben habilitar manualmente al crear una vista materializada o una tabla de streaming.

Para habilitar manualmente la compatibilidad con vectores de eliminación en una tabla o vista, use la delta.enableDeletionVectors propiedad table. Puede habilitar manualmente vectores de eliminación en una tabla delta al crear o modificar la tabla. Puede habilitar manualmente los vectores de eliminación en una vista materializada o una tabla de streaming solo cuando se crea la vista materializada o la tabla streaming. No se puede usar una ALTER instrucción para habilitar vectores de eliminación en una vista materializada o en una tabla streaming.

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.

Aplicar cambios a 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 uno de los eventos siguientes hace que los archivos de datos se vuelvan a escribir:

  • 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 cuando se completa. Esta hora de finalización es la marca de tiempo que debe tener en cuenta para que el umbral de retención de la VACUUM operación quite completamente los archivos eliminados. Consulte Eliminación de archivos de datos sin usar con vacío.

Compatibilidad con clientes Delta

Azure Databricks usa vectores de eliminación para 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 uso de vectores de eliminación para lecturas y escrituras 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 especifica qué operaciones de escritura usan vectores de eliminación:

Cliente 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 la versión 3.1 o posterior.

Nota:

Para obtener soporte técnico con otros clientes delta, consulte la documentación de integraciones de Delta Lake de OSS.

Limitaciones

  • UniForm no admite vectores de eliminación.
  • No se puede usar una instrucción GENERATE para generar un archivo de manifiesto para una tabla que tenga archivos mediante vectores de eliminación. Para generar un manifiesto, ejecute primero un REORG TABLE ... INSTRUCCIÓN APPLY (PURGE) y, a continuación, ejecute la GENERATE instrucción . Debe asegurarse de que no se estén ejecutando operaciones de escritura simultáneas al enviar la REORG instrucción .
  • No se pueden generar archivos de manifiesto de forma incremental para una tabla con vectores de eliminación habilitados (por ejemplo, estableciendo la propiedad delta.compatibility.symlinkFormatManifest.enabled=truetable ).
  • Si habilita vectores de eliminación en una vista materializada o tabla de streaming y, posteriormente, deshabilita los vectores de eliminación, se impide que las escrituras futuras en la vista o tabla usen vectores de eliminación, pero no se quitan los vectores de eliminación existentes.
  • No se puede degradar el protocolo de tabla después de habilitar vectores de eliminación en una vista materializada o tabla de streaming. Después de habilitar, no se puede quitar la característica de tabla para vectores de eliminación, incluso si posteriormente deshabilita vectores de eliminación en la vista o tabla.
  • No se puede ejecutar REORG en vistas materializadas ni tablas de streaming para confirmar los cambios registrados en vectores de eliminación en archivos de datos Parquet que respaldan estos objetos. Debido a esta limitación, no habilite vectores de eliminación en vistas materializadas o tablas de streaming si debe garantizar la eliminación completa de registros (por ejemplo, para el cumplimiento del RGPD o la CCPA).