Compartir vía


Compatibilidad de características y protocolos en Delta Lake

En este artículo se proporciona información general sobre los protocolos de Delta Lake, las características de tabla y la compatibilidad con los clientes de Delta Lake para lecturas y escrituras.

El registro de transacciones de una tabla Delta contiene información de control de versiones de protocolo. Consulte Revisión de los detalles de la tabla de Delta Lake con el detalle descrito.

¿Cómo especifica el protocolo de tabla compatibilidad de lectura y escritura?

Cada tabla Delta tiene una especificación de protocolo que indica el conjunto de funcionalidades necesarias para leer y escribir en la tabla. Las aplicaciones que leen o escriben en la tabla usan la especificación de protocolo para determinar si pueden controlar todas las características que admite la tabla. Si una aplicación no sabe cómo controlar una característica que aparece como compatible con el protocolo de una tabla, no podrá leer de esa tabla ni escribir en ella.

La mayoría de las nuevas funcionalidades y funcionalidades agregadas a Delta Lake requieren la actualización del protocolo de tabla.

En la tabla siguiente se proporciona información general sobre los términos clave que se usan para describir los protocolos de Delta Lake:

Término Descripción
Cliente de Delta Lake Cualquier sistema que lea o escriba en una tabla Delta.
Lectura del protocolo Especifica la compatibilidad necesaria para que un cliente de Delta Lake lea una tabla.
Escribir protocolo Especifica la compatibilidad necesaria para que un cliente de Delta Lake escriba en una tabla.
minReaderVersion Componente del protocolo de lectura. Los valores válidos son 1, 2 o 3.
minWriterVersion Componente del protocolo de escritura. Los valores válidos son enteros de 2 a 7.
Función de tabla Una alternativa detallada a las versiones de protocolo. Las características de la tabla corresponden a las características opcionales habilitadas de Delta Lake.
Función de escritor Una característica de tabla vinculada a un protocolo de escritura.
Función de lectura Una característica de tabla vinculada a un protocolo de lectura.

Las características de escritura y protocolos de escritura solo afectan a la compatibilidad con los clientes de escritura, lo que significa que todavía se admite el acceso de solo lectura a la tabla desde cargas de trabajo heredadas. Los protocolos de lectura y las características del lector afectan tanto a la compatibilidad de lectura como de escritura.

No todas las características de Delta Lake son compatibles entre sí.

Algunas características de tabla no se pueden quitar una vez habilitadas. Consulte Eliminar una característica de tabla de Delta Lake y degradar el protocolo de tabla.

Características de tabla para la compatibilidad de protocolos

En Databricks Runtime 12.2 LTS y versiones posteriores, Databricks utiliza funciones de tabla para indicar soporte para características y compatibilidad con lectores y escritores. Las características de tabla usan marcas granulares para especificar qué características son compatibles con una tabla determinada. Las características de tabla reemplazan el esquema de control de versiones de protocolo heredado mediante la introducción de nuevas características al protocolo Delta Lake.

Las características del escritor de tablas indican características que afectan a la forma en que se escriben los datos. Las características del escritor de tablas requieren minWriterVersion == 7. Las características implementadas como características de escritor no bloquean los clientes de lector.

Las características del lector de tablas indican características que afectan a la forma en que se leen los datos. Todas las características del lector de tablas también son características de escritor de tablas. Las características del lector de tablas requieren minReaderVersion == 3 y minWriterVersion == 7. Un cliente no puede escribir en una tabla que no puede leer.

Cuando se habilitan las características de la tabla, todas las características admitidas por el protocolo para la tabla aparecen en las listas respectivas como readerFeatures o writerFeatures. Al quitar características de una tabla, es posible que la tabla quite este comportamiento para resolverlo en el protocolo más bajo posible. Consulte Protocolo más bajo posible.

Versiones de protocolo basadas en enteros y compatibilidad heredada

Todas las tablas incluyen una versión de protocolo basada en enteros representada por minReaderVersion y minWriterVersion. La funcionalidad implementada mediante las características de tabla se basa en estas versiones de protocolo, pero muchos clientes de lector y escritor heredados siguen usando versiones de protocolo para administrar la compatibilidad. Delta Lake procura resolver el protocolo de tabla a la versión más baja posible para mantener la máxima compatibilidad con los clientes Delta modernos y heredados. Consulte Protocolo más bajo posible.

En el esquema de control de versiones de protocolo basado en enteros, cada número de versión agrupa varias características y las características de los números de versión son acumulativas. Esto significa que para ser compatible con el protocolo Delta, los clientes deben implementar compatibilidad con todas las características de lector o escritor presentes en una versión determinada, incluidas todas las características publicadas anteriormente.

Nota:

Databricks proporciona compatibilidad parcial sin interrupciones con las características de la tabla en todas las versiones admitidas de Databricks Runtime. Los clientes delta de OSS eligen cómo implementar la compatibilidad con características dadas.

¿Cuándo cambia el protocolo de tabla?

El protocolo de una tabla cambia en las condiciones siguientes:

  • Si se habilita una nueva característica, se actualiza el protocolo.
  • Si se quita una característica de tabla, el protocolo se degrada.

Deshabilitar una característica de tabla no da lugar a una degradación del protocolo. Debe eliminar la funcionalidad para removerla completamente de la tabla de protocolo. No todas las funcionalidades de la tabla se pueden quitar. Consulte Eliminar una característica de tabla de Delta Lake y degradar el protocolo de tabla.

Todas las operaciones de cambio de protocolo entran en conflicto con todas las escrituras simultáneas.

Se produce un error en las lecturas de streaming cuando encuentran una confirmación que cambia los metadatos de la tabla. Si quiere que la transmisión continúe, debe reiniciarla. Para conocer los métodos más recomendables, consulte Consideraciones de producción para Structured Streaming.

Advertencia

La mayoría de las actualizaciones de versión del protocolo son irreversibles y la actualización de la versión del protocolo podría interrumpir los lectores de tablas, escritores o ambos existentes en Delta Lake. Databricks recomienda que actualice tablas específicas solo cuando sea necesario, como por ejemplo para aceptar nuevas característica de Delta Lake. También debe comprobar que todas las herramientas de producción actuales y futuras admiten tablas de Delta Lake con la nueva versión del protocolo.

Las degradaciones de protocolo están disponibles para algunas características. Consulte Eliminar una característica de tabla de Delta Lake y degradar el protocolo de tabla.

¿Cuándo se actualiza el protocolo de tabla?

Al habilitar una característica en una tabla, el protocolo de tabla se actualiza automáticamente. Algunas características se habilitan automáticamente en función de la sintaxis usada en CREATE las instrucciones de tabla o ALTER , mientras que otras características requieren habilitación explícita mediante la configuración de propiedades de la tabla. A veces, debe habilitar explícitamente varias características de tablas para admitir la funcionalidad deseada. En otros casos, habilitar la funcionalidad podría habilitar automáticamente otras características de tabla. Consulte la documentación de Azure Databricks para conocer la funcionalidad y la sintaxis que usa para determinar qué características de tabla son necesarias.

Las características del lector requieren actualizar el protocolo de lectura y el protocolo de escritura. Las características del escritor solo requieren la actualización del protocolo de escritura.

Por ejemplo, la compatibilidad con CHECK restricciones es una función de las aplicaciones de escritura: solo las aplicaciones de escritura necesitan conocer CHECK las restricciones y aplicarlas.

Por el contrario, la asignación de columnas requiere que se actualicen los protocolos de lectura y escritura. Dado que los datos se almacenan de forma diferente en la tabla, las aplicaciones de lectura deben conocer la asignación de columnas para poder leerlos correctamente.

Nota:

Databricks recomienda no cambiar las propiedades de la tabla minReaderVersion y minWriterVersion. El cambio de estas propiedades de tabla no impide la actualización del protocolo. Establecer estos valores en un valor inferior no degrada la tabla. Consulte Eliminar una característica de tabla de Delta Lake y degradar el protocolo de tabla.

Protocolo más bajo posible

De forma predeterminada, Delta Lake intenta usar el protocolo más bajo posible para representar todas las características marcadas como compatibles con la tabla.

Este comportamiento solo puede dar lugar a la reducción del protocolo de tabla, lo que significa que el minReaderVersion o el minWriterVersion pueden cambiar a valores inferiores para una tabla.

Debe ejecutar el DROP FEATURE comando para quitar una característica de tabla de la lista de características admitidas en el protocolo de tabla. Las características de tabla nunca se quitan automáticamente.

Si todas las características de Delta Lake presentes en una tabla son totalmente compatibles con una versión de protocolo inferior, la tabla podría revertir a una versión de protocolo que no usa características de tabla para indicar la compatibilidad del lector y del escritor. Cuando se produce la degradación de este protocolo, la tabla puede quitar readerFeatures o bien ambos, readerFeatures y writerFeatures, del protocolo de tabla. Esto no da lugar a que se deshabilite ninguna característica de Delta Lake y solo se produzca cuando no se requieren características de tabla en el protocolo de tabla.

Todos los cambios que reducen el protocolo de tabla aumentan la compatibilidad con los clientes de lector y escritor. Esto se debe a que los clientes de lector y escritor deben respetar las versiones de protocolo inferiores, incluso si admiten versiones de protocolo más altas.

¿Cambian las características de tabla cómo se habilitan las características de Delta Lake?

Si solo interactúa con tablas Delta a través de Azure Databricks, puede seguir supervisando la compatibilidad de las funciones de Delta Lake usando los requerimientos mínimos de Databricks Runtime. Azure Databricks admite la lectura de tablas Delta que se han actualizado a las características de tabla en todas las versiones de LTS de Databricks Runtime, siempre que esa versión admita todas las características que usa la tabla.

Si utiliza otros sistemas para leer y escribir en tablas Delta, es posible que deba tener en cuenta la forma en que las características de tabla afectan a la compatibilidad, ya que existe el riesgo de que el sistema no conozca las versiones del protocolo actualizadas.

Importante

Las características de tabla se introducen al formato de Delta Lake para la versión 7 del escritor y la versión 3 del lector. Azure Databricks ha retroportado código a todas las versiones de Databricks Runtime LTS compatibles para agregar compatibilidad con las características de tabla, pero solo para las características que ya son compatibles con esa instancia de Databricks Runtime. Esto significa que, aunque puede optar por usar características de tabla para habilitar las columnas generadas y seguir trabajando con estas tablas en Databricks Runtime 9.1 LTS, las tablas con columnas de identidad habilitadas (lo que requiere Databricks Runtime 10.4 LTS) todavía no se admiten en ese entorno de Databricks Runtime.

¿Cómo administra Azure Databricks la compatibilidad de características de Delta Lake?

Databricks introducen la compatibilidad con las nuevas características y optimizaciones de Delta Lake en las versiones de Databricks Runtime que se basan en Delta Lake. Las optimizaciones de Azure Databricks que aprovechan las características de Delta Lake respetan los protocolos usados en OSS Delta Lake por motivos de compatibilidad. Muchas optimizaciones de Azure Databricks requieren habilitar las características de Delta Lake en una tabla y algunos productos de Azure Databricks, como Canalizaciones declarativas de Lakeflow, dependen de muchas características de tabla.

  • Todas las tablas escritas por versiones inferiores de Databricks Runtime tienen compatibilidad completa de lectura y escritura en versiones superiores de Databricks Runtime.
  • Las tablas escritas por versiones superiores de Databricks Runtime pueden usar características de tabla que no se admiten en versiones inferiores de Databricks Runtime.
    • Algunas características pueden permitir escrituras de versiones inferiores de Databricks Runtime sin aplicar completamente todas las optimizaciones relacionadas con las características de tabla habilitadas.

Al trabajar con características de tabla compatibles con versiones anteriores de Databricks Runtime, es posible que algunas operaciones que se ejecuten en una versión determinada de Databricks Runtime no se ejecuten en la versión delta del sistema operativo correspondiente. Si su ciclo de desarrollo o arquitectura de datos incluye OSS Delta Lake, siempre debe probar la compatibilidad en los clientes OSS Delta antes de habilitar las funcionalidades de tabla en las tablas de producción.

Características de Delta Lake y versiones necesarias de Databricks Runtime

Las características se habilitan tabla a tabla. En la tabla siguiente se muestra la versión más baja de Databricks Runtime con compatibilidad completa con la característica indicada. La compatibilidad total significa que se admiten todas las funcionalidades disponibles con carácter general para lecturas y escrituras.

Característica Requiere Databricks Runtime 12.1, o cualquier versión posterior. Documentación
CHECK restricciones Todas las versiones admitidas de Databricks Runtime Establecimiento de una restricción de CHECK en Azure Databricks
Cambio de fuente de distribución de datos Todas las versiones admitidas de Databricks Runtime Uso del flujo de datos de cambios de Delta Lake en Azure Databricks
Columnas generadas Todas las versiones admitidas de Databricks Runtime Columnas generadas por Delta Lake
Asignación de columnas Todas las versiones admitidas de Databricks Runtime Cambio de nombre y eliminación de columnas con la asignación de columnas de Delta Lake
Columnas de identidad Todas las versiones admitidas de Databricks Runtime Uso de columnas de identidad en Delta Lake
Características de la tabla Databricks Runtime 12.2 LTS Características de tabla para la compatibilidad de protocolos
Vectores de eliminación Databricks Runtime 12.2 LTS ¿Qué son los vectores de eliminación?
Marca de tiempoNTZ Databricks Runtime 13.3 LTS TIMESTAMP_NTZ tipo
Uniforme Databricks Runtime 13.3 LTS Lectura de tablas Delta con clientes de Iceberg
Agrupación en clústeres líquidos Databricks Runtime 13.3 LTS Uso de clústeres líquidos para tablas
Seguimiento de filas Databricks Runtime 14.3 LTS Uso del seguimiento de filas para tablas delta
Ampliación de tipos Databricks Runtime 15.4 LTS Ampliación de tipos
Variante Databricks Runtime 15.4 LTS Compatibilidad con variante en Delta Lake
Intercalaciones Databricks Runtime 16.1 Compatibilidad con las intercalaciones para Delta Lake
Puntos de control protegidos Databricks Runtime 16.3 Quitar una característica de tabla de Delta Lake y degradar el protocolo de tabla

Ver las Notas de la versión de Databricks Runtime: versiones y compatibilidad.

Nota:

Las canalizaciones declarativas de Lakeflow y Databricks SQL actualizan automáticamente los entornos en tiempo de ejecución con versiones periódicas para admitir nuevas características. Consulte las notas de la versión de Lakeflow Declarative Pipelines y el proceso de actualización y las notas de la versión de Databricks SQL.

Características por versión de protocolo

El protocolo OSS Delta Lake se ha estandarizado en las características de tabla, pero algunos clientes de lectura y escritura no han implementado la compatibilidad con las características de tabla y siguen usando protocolos heredados minWriterVersion y minReaderVersion.

Es posible que algunos clientes no tengan compatibilidad con todas las características de Delta Lake, incluidas las características que usan el control de versiones de protocolo heredado. Consulte la documentación del cliente de Delta Lake para confirmar la compatibilidad con las características. Pruebe siempre la compatibilidad antes de habilitar nuevas características en tablas de producción.

En la tabla siguiente se muestran las versiones mínimas del protocolo de lector y escritor necesarias para las características de Delta Lake, e indica si es necesario respetar una característica de tabla solo para escrituras o tanto para lecturas como para escrituras.

Nota:

Si solo le preocupa la compatibilidad de Databricks Runtime, consulte ¿Cómo administra Azure Databricks la compatibilidad de características de Delta Lake?.

Característica minWriterVersion minReaderVersion Función de tabla
Funcionalidad básica 2 1 Redactor
CHECK Restricciones 3 1 Redactor
Cambio de fuente de distribución de datos 4 1 Redactor
Columnas generadas 4 1 Redactor
Asignación de columnas 5 2 Lector y escritor
Columnas de identidad 6 1 Redactor
Seguimiento de filas 7 1 Redactor
Vectores de eliminación 7 3 Lector y escritor
Marca de tiempoNTZ 7 3 Lector y escritor
Agrupación en clústeres líquidos 7 3 Lector y escritor
Lectores de Iceberg (UniForm) 7 2 Escritor (1)
Ampliación de tipos 7 3 Lector y escritor
Variante 7 3 Lector y escritor
Colaciones 7 3 Lector y escritor
Puntos de control protegidos 7 1 Redactor

(1): Requiere que la asignación de columnas esté habilitada.