Compatibilidad con archivos en Azure Databricks

Importante

Esta característica está en la versión preliminar pública para Databricks Runtime 13.3 LTS y posteriores.

Con compatibilidad con archivado en Azure Databricks, puedes usar políticas de ciclo de vida basadas en la nube en el almacenamiento de objetos en la nube que contiene tablas Delta Lake. La habilitación de la compatibilidad con archivos en una tabla de Delta Lake indica de forma eficaz a Azure Databricks que omita los archivos que son anteriores al período especificado de la tabla.

Las políticas del ciclo de vida de la nube reducen los costes de almacenamiento al trasladar archivos antiguos a un nivel de almacenamiento de archivo. Sin soporte archivístico, una política de ciclo de vida puede romper consultas contra una tabla Delta Lake, porque los archivos de datos que leen las consultas ya no están disponibles. Mira Por qué deberías habilitar el soporte de archivado.

Cuándo utilizar compatibilidad de archivado

Activa la compatibilidad con archivado en una tabla cuando todo lo siguiente sea cierto:

  • Utilizas una política de ciclo de vida que archiva los archivos de datos de la tabla según el tiempo de creación del archivo.
  • La mayoría de las consultas sobre la tabla leen datos recientes o excluyen los archivos archivados.
  • Las consultas que necesitan datos archivados son poco frecuentes, y puedes esperar a que alguien restaure esos archivos en el almacenamiento de tu proveedor en la nube antes de volver a ejecutar la consulta. Consulte Restauración de archivos archivados.

No utilices compatibilidad con archivado si tus consultas revisan regularmente el historial completo de la tabla. Las consultas que requieren archivos de archivo fallan. La compatibilidad con archivado tampoco funciona con políticas de ciclo de vida basadas en el tiempo de acceso o las etiquetas. Consulte Limitaciones.

Requisitos

Azure Databricks solo admite archivos para Azure Archive. Consulte laDocumentación de Azure sobre cómo optimizar los costos con la administración del ciclo de vida.

¿Por qué debe habilitar la compatibilidad con archivos?

El soporte de archivo solo permite consultas que devuelvan resultados correctos sin tocar los archivos archivados. Estas consultas incluyen las que:

  • Consulta solo metadatos.
  • Tienen filtros que no requieren examinar los archivos archivados.

Se produce un error en todas las consultas que requieren datos en archivos archivados.

Importante

Azure Databricks nunca devuelve resultados para las consultas que requieren archivos archivados para devolver el resultado correcto.

La habilitación de la compatibilidad de archivado con una tabla en Azure Databricks no crea ni modifica las directivas de ciclo de vida definidas para el almacenamiento de objetos en la nube. Consulte Cambio de la regla de transición de administración del ciclo de vida.

Sin soporte archivístico, las operaciones contra las tablas Delta Lake podrían interrumpirse porque los archivos de datos o registros de transacciones se han movido a ubicaciones archivadas y no están disponibles al ser consultados. El soporte de archivado introduce optimizaciones para evitar consultar los datos archivados cuando sea posible. También agrega nueva sintaxis para identificar los archivos que se deben restaurar desde el almacenamiento de archivos para realizar las consultas.

Consultas optimizadas para datos archivados

La compatibilidad con archivado en Azure Databricks optimiza estas consultas en tablas Delta Lake.

Consulta Comportamiento nuevo
SELECT * FROM <table_name> LIMIT <limit> [WHERE <partition_predicate>] Omita automáticamente los archivos archivados y devuelva los resultados de los datos en una capa de almacenamiento no archivada.
Comandos de mantenimiento de Delta Lake: OPTIMIZE, ZORDER, ANALYZE, PURGE Omita automáticamente los archivos archivados y ejecute el mantenimiento en el resto de la tabla.
Sentencias DDL y DML que sobrescriben o eliminan datos, incluyendo REPLACE TABLE, INSERT OVERWRITE, TRUNCATE TABLE, y DROP TABLE Marque las entradas del registro de transacciones para los archivos de datos archivados de destino como eliminados.
FSCK REPAIR TABLE Omita los archivos archivados y compruebe solo los archivos que no han alcanzado la directiva de ciclo de vida.

Mensajes anticipados de error y fallo

Para consultas que deben escanear archivos archivados para generar resultados correctos, configurar la compatibilidad con archivado para Delta Lake tiene estos efectos:

  • Se producirá un error en las consultas antes de tiempo si intentan acceder a los archivos almacenados, lo que reduce el tiempo de cálculo desperdiciado y permite a los usuarios adaptar y volver a ejecutar las consultas con rapidez.
  • Los mensajes de error informan a los usuarios de que se ha producido un error en una consulta porque la consulta intentó acceder a los archivos almacenados.

Los usuarios pueden generar un informe con los archivos que deben restaurarse mediante la sintaxisSHOW ARCHIVED FILES. Consulte Mostrar archivos archivados.

Importante

Si recibe el error Not enough files to satisfy LIMIT, la tabla no tiene suficientes filas de datos en archivos no archivados para satisfacer el número de registros que especifica LIMIT. Reduzca la cláusula LIMIT para buscar suficientes filas no archivadas que satisfagan el valor LIMIT especificado. Consulte Limitaciones.

Habilitar soporte de archivado

Habilita el soporte archivístico para las tablas Delta Lake especificando manualmente el intervalo de archivo configurado en la política subyacente de gestión del ciclo de vida en la nube.

ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');

Establecer una timeUntilArchived hora indica a Azure Databricks que omita los archivos de la tabla de Delta Lake que son anteriores al período de tiempo especificado. Esta configuración es independiente de las directivas de ciclo de vida de la cuenta en la nube. Los cambios en uno no afectan al otro. Si actualiza la política de ciclo de vida en su cuenta de nube, también debe actualizar la configuración de archivado en su tabla de Delta Lake. Consulte Cambio de la regla de transición de administración del ciclo de vida.

Al establecer una nueva directiva de ciclo de vida en la cuenta en la nube, los cambios pueden tardar hasta 24 horas en surtir efecto. Consulte Ejecución de directivas de administración del ciclo de vida.

Si habilita esta configuración sin directivas de ciclo de vida establecidas para el almacenamiento de objetos en la nube, la compatibilidad con el archivado permite que las consultas se realicen correctamente y los resultados incluyen datos de los archivos marcados para el archivado. Consulte ¿Cómo muestrea Azure Databricks los datos restaurados?.

Advertencia

La directiva de ciclo de vida de la nube no debe archivar el registro de transacciones delta (directorio _delta_log/). Consulte Limitaciones.

Importante

El soporte para archivado depende completamente de entornos de cómputo compatibles con Azure Databricks y solo funciona para tablas Delta Lake. La configuración del soporte para archivo no cambia el comportamiento, la compatibilidad ni el soporte en los clientes de OSS Delta Lake ni en Databricks Runtime 12.2 LTS y anteriores.

Mostrar archivos archivados

Para identificar los archivos que se deben restaurar para completar una consulta determinada, use SHOW ARCHIVED FILES.

SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];

Esta operación devuelve nombres de archivos de archivos comprimidos como un DataFrame Spark. Restaure los archivos archivados necesarios siguiendo las instrucciones documentadas del proveedor de almacenamiento de objetos. Consulte Restauración de archivos archivados.

Para obtener información sobre cómo Azure Databricks comprueba si hay datos restaurados, consulte ¿Cómo funciona el ejemplo de Azure Databricks para los datos restaurados?.

Nota:

Durante esta operación, Delta Lake solo tiene acceso a las estadísticas de datos contenidas en el registro de transacciones. Por defecto, estas son las estadísticas recogidas en las primeras 32 columnas de la tabla:

  • Valores mínimos
  • Valores máximos
  • Recuentos nulos
  • Número total de registros

Los archivos devueltos incluyen todos los archivos archivados que deben leerse para determinar si existen registros que cumplen o no un predicado en el archivo. Databricks recomienda proporcionar predicados que incluyan campos en que los datos están particionados, ordenados por z o agrupados, para reducir el número de archivos que se deben restaurar.

Restaurar archivos archivados

Para identificar todos los archivos que requieren restauración, use SHOW ARCHIVED FILES para ver la lista de archivos archivados.

Use las API de rehidratación para restaurar archivos a un nivel de almacenamiento en línea. Consulte Rehidratación de blobs desde el nivel de archivo.

Después de restaurar los archivos en el almacenamiento del proveedor de nube, puede consultar la tabla. La compatibilidad con el archivado reconoce automáticamente los archivos restaurados. Para obtener información sobre cómo Azure Databricks comprueba si hay datos restaurados, consulte ¿Cómo funciona el ejemplo de Azure Databricks para los datos restaurados?.

Actualizar o eliminar datos archivados

Si ejecuta una operación de MERGE, UPDATE o DELETE que afecta a los datos de los archivos archivados, se produce un error en la operación. Debe restaurar los datos en un nivel de almacenamiento que admita una recuperación rápida para ejecutar estas operaciones. Use SHOW ARCHIVED FILES para determinar los archivos que debe restaurar (consulte Restaurar archivos archivados).

¿Cómo toma muestras Azure Databricks de los datos restaurados?

Cuando Azure Databricks prepara un examen sobre una tabla con compatibilidad con archivos habilitada, toma muestras de los archivos anteriores al período de retención especificado que requiere la consulta para determinar si se han restaurado o no los archivos. Si los resultados indican que se han restaurado los archivos de la muestra presuntamente archivados, Azure Databricks asume que se han restaurado todos los archivos de la consulta y la consulta se procesa. Los resultados incluyen datos de los archivos marcados para el archivado.

Es posible que el muestreo no se aplique a todas las consultas, consulte Limitaciones.

Limitaciones

El soporte archivístico tiene estas limitaciones:

  • El soporte de archivado solo se aplica a los archivos de datos. Si algún archivo del registro de transacciones delta (_delta_log/ directorio) se mueve a un nivel de almacenamiento archivado, la tabla deja de estar completamente inaccesible y se produce un error en todas las consultas de la tabla. Debe configurar la política de ciclo de vida de la nube para que la ruta _delta_log/ no esté incluida en el archivado. Vea ejemplos de configuraciones de ciclo de vida de S3.
  • No existe compatibilidad con las directivas de administración del ciclo de vida que no se basan en el tiempo de creación de archivos. Esto incluye directivas basadas en el tiempo de acceso y directivas basadas en etiquetas.
  • No se puede usar DROP COLUMN en una tabla con archivos archivados.
  • REORG TABLE APPLY PURGE realiza un intento en la medida de lo posible, pero solo funciona en archivos de vectores de eliminación y archivos de datos referenciados que no están almacenados. PURGE no puede eliminar archivos vectoriales de eliminación archivados.
  • La extensión de la regla de transición de administración del ciclo de vida produce un comportamiento inesperado. Consulte Extender la regla de transición de gestión del ciclo de vida.
  • LIMIT Las consultas en tablas con compatibilidad con archivos habilitada no desencadenan el muestreo para los datos restaurados. Si se restauran los datos de una tabla, la mayoría de las consultas se realizan correctamente al consultar los datos restaurados, pero una LIMIT consulta devuelve un DELTA_ARCHIVED_FILES_IN_LIMIT error. Consulte ¿Cómo muestrea Azure Databricks los datos restaurados?.

Cambie la regla de transición de administración del ciclo de vida.

Si cambia el intervalo de tiempo de la regla de transición de administración del ciclo de vida de la nube, debe actualizar la propiedad delta.timeUntilArchived al mismo intervalo.

Si el intervalo de tiempo antes del archivado se acorta (menos tiempo desde la creación del archivo), la función de archivado para la tabla Delta Lake sigue funcionando normalmente después de actualizar la propiedad de la tabla.

Extender la regla de transición de gestión del ciclo de vida

Si se amplía el intervalo de tiempo antes del archivado (para agregar más tiempo antes de que se desencadene el archivado), la actualización de la propiedad delta.timeUntilArchived al nuevo valor puede dar lugar a errores. Los proveedores de nube no restauran automáticamente los archivos del almacenamiento archivado cuando se cambian las directivas de retención de datos. Esto significa que los archivos que antes cumplían los requisitos para ser archivados, y que ahora no se consideran aptos para ello, se siguen archivando.

Importante

Para evitar errores, no establezca nunca la propiedad delta.timeUntilArchived en un valor mayor que la antigüedad real de los datos archivados más recientemente.

Considere un escenario en el que el intervalo de tiempo para el archivo cambia de 60 días a 90 días:

  1. Cuando cambia la directiva, todos los registros entre 60 y 90 días de antigüedad ya están archivados.
  2. Durante 30 días, no se archiva ningún archivo nuevo (los archivos no archivados más antiguos tienen 60 días de antigüedad cuando se extiende la directiva).
  3. Después de 30 días, la directiva de ciclo de vida describe correctamente todos los datos archivados.

La configuración delta.timeUntilArchived hace un seguimiento del intervalo de tiempo establecido en el tiempo de creación del archivo registrado por el registro de transacciones delta. No tiene conocimiento explícito de la directiva subyacente. Durante el periodo de retraso entre el umbral de archivo antiguo y el nuevo umbral de archivo, puedes adoptar uno de estos enfoques para evitar consultar archivos archivados:

  1. Puede dejar la configuración delta.timeUntilArchived con el umbral anterior hasta que haya transcurrido suficiente tiempo para que se archiven todos los archivos.
    • Siguiendo el ejemplo anterior, cada día durante los primeros 30 días, Azure Databricks considera archivados los datos de otro día, pero aún deben ser archivados por el proveedor de la nube. Esto no produce un error, pero omite algunos archivos de datos que se pueden consultar.
    • Después de 30 días, actualice delta.timeUntilArchived a 90 days.
  2. Puede actualizar la configuración delta.timeUntilArchived cada día para reflejar el intervalo actual durante el período de retardo.
    • Aunque la directiva de nube se establece en 90 días, la antigüedad real de los datos archivados cambia en tiempo real. Por ejemplo, después de 7 días, establecer delta.timeUntilArchived en 67 days refleja con precisión la antigüedad de todos los archivos de datos archivados.
    • Este enfoque solo es necesario si debe tener acceso a todos los datos en niveles de acceso frecuente.

Nota:

La actualización del valor de delta.timeUntilArchived no cambia realmente los datos que se archivan. Solo cambia los datos que Azure Databricks trata como si estuviera archivado.