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.
Los vectores de eliminación son una característica de optimización de almacenamiento que acelera las modificaciones en las tablas. De forma predeterminada, la eliminación de una sola fila requiere volver a escribir todo el archivo Parquet que contiene ese registro. Los vectores de eliminación evitan esta sobrecarga. Cuando los vectores de eliminación están habilitados, las operaciones DELETE, UPDATE y MERGE marcan filas como modificadas sin volver a escribir el archivo Parquet. Lee y resuelve el estado actual de la tabla aplicando las modificaciones registradas en los vectores de eliminación.
Databricks recomienda usar Databricks Runtime 14.3 LTS y versiones posteriores para escribir tablas con vectores de eliminación para usar todas las optimizaciones. Para leer tablas con vectores de eliminación habilitados, use Databricks Runtime 12.2 LTS y versiones posteriores.
En el Databricks Runtime 14.2 y versiones posteriores, las tablas con vectores de eliminación admiten la concurrencia a nivel de fila. Vea Concurrencia a nivel de fila.
Nota:
Para las actualizaciones de E/S predictivas, Photon usa vectores de eliminación para acelerar las operaciones DELETE, MERGE y UPDATE. Consulte Utilizar la E/S predictiva para acelerar las actualizaciones.
Habilitación de vectores de eliminación
En la configuración del área de trabajo, puede habilitar vectores de eliminación en tablas nuevas cuando se usa una instancia de SQL Warehouse o Databricks Runtime 14.3 LTS o superior. La configuración predeterminada varía según la región; consulte Habilitar automáticamente vectores de eliminación.
Los vectores de eliminación no están habilitados de forma predeterminada para las vistas materializadas y las tablas de streaming almacenadas en metastore de Hive.
Para habilitar o quitar manualmente el soporte para vectores de eliminación en cualquier tabla o vista, incluidas las tablas de streaming y las vistas materializadas, use la propiedad de tabla enableDeletionVectors. Para habilitar vectores de eliminación en una tabla al crear o modificar una tabla:
-- For Delta tables
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
No se puede usar una ALTER instrucción para habilitar o quitar vectores de eliminación en una vista materializada o una tabla de streaming.
En el caso de las tablas de Iceberg, use iceberg.enableDeletionVectors en lugar de delta.enableDeletionVectors.
Advertencia
Al habilitar vectores de eliminación, Databricks actualiza el protocolo de tabla. Después de actualizar, los clientes sin compatibilidad con vectores de eliminación no pueden leer la tabla. Consulte Compatibilidad y protocolos de características de Delta Lake.
En Databricks Runtime 14.1 y versiones superiores, puede eliminar la funcionalidad de tabla de vectores de eliminación para permitir la compatibilidad con otros clientes. Consulte Eliminar una característica de tabla de Delta Lake y degradar el protocolo de tabla.
Aplicar cambios a los archivos de datos de Parquet
Los vectores de eliminación indican cambios en las filas como eliminaciones lógicas que modifican de manera lógica los archivos de datos Parquet existentes en la tabla. 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
OPTIMIZEen 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 sobre 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. Es posible que algunos cambios registrados en vectores de eliminación no se apliquen físicamente 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.
Eliminación física de datos antiguos
Es posible que los datos modificados sigan existiendo en los archivos de datos antiguos de una tabla después de una operación de purga. Es posible que quiera quitar físicamente los datos, por ejemplo, para reducir los costos de almacenamiento con su proveedor de nube o para cumplir con las solicitudes del RGPD.
Ejecute VACUUM para eliminar físicamente los archivos antiguos. La REORG TABLE ... APPLY (PURGE) operación crea una nueva versión de la tabla cuando se completa. Para eliminar completamente los archivos eliminados de las versiones anteriores de la tabla, debe establecer el umbral de retención de VACUUM en la marca de tiempo de finalización de la operación de purga. Consulte Eliminaciones de solo metadatos para purgar y forzar la reescritura de los datos.
Mejora del rendimiento de las tablas grandes
Para mejorar el rendimiento al purgar datos eliminados suavemente en tablas grandes, establezca spark.databricks.delta.reorg.purgeMode a rows. Por ejemplo, establezca esta configuración al purgar los datos manualmente con REORG TABLE ... APPLY (PURGE) o al quitar vectores de eliminación con ALTER TABLE DROP FEATURE deletionVectors.
De forma predeterminada, spark.databricks.delta.reorg.purgeMode se establece en all. En tablas grandes, esta operación puede ser lenta porque las operaciones de purga deben examinar todos los pies de página de archivo Parquet para comprobar si hay datos de columna quitados y filas eliminadas temporalmente.
El rows valor limita la operación para controlar solo los archivos con filas eliminadas temporalmente. En tablas grandes, esto puede mejorar el rendimiento si muchos archivos no contienen filas eliminadas temporalmente y la tabla no tiene columnas quitadas.
Compatibilidad de cliente
Azure Databricks usa vectores de eliminación para impulsar la E/S predictiva para las actualizaciones en los procesos habilitados con 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 muestran las versiones de cliente necesarias para leer y escribir tablas con vectores de eliminación habilitados y especifica qué operaciones de escritura usan vectores de eliminación:
| Cliente | Escribir vectores de eliminación | 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 Delta Sharing. | Databricks: requiere Databricks Runtime 14.1 o superior. Apache Spark de código abierto: requiere delta-sharing-spark la versión 3.1 o posterior. |
Para obtener soporte técnico con otros clientes, consulte la documentación sobre integraciones de OSS Delta Lake.
Limitaciones
- UniForm Iceberg v2 no admite vectores de eliminación. Apache Iceberg v3 admite vectores de eliminación en tablas con UniForm habilitado. Consulte Uso de las características de Apache Iceberg v3.
- No se puede usar una GENERATE instrucción 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 instrucción
GENERATE. Debe asegurarse de que no se estén ejecutando operaciones de escritura simultáneas al enviar laREORGinstrucció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 en una tabla de streaming y, posteriormente, quita los vectores de eliminación, los vectores de eliminación no se aplican a las escrituras futuras en la vista o en la tabla, pero los vectores de eliminación existentes permanecen.
- 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.