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.
La compatibilidad de archivado en Azure Databricks introduce una colección de capacidades que permiten usar directivas de ciclo de vida basadas en la nube en el almacenamiento de objetos en la nube que contiene tablas Delta.
Importante
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?
La compatibilidad con archivos solo permite responder correctamente a las consultas que se pueden responder sin tocar archivos archivados. Estas consultas incluyen las que:
- Solo consultan 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.
Sin compatibilidad con el archivado, las operaciones con tablas Delta pueden interrumpirse porque los archivos de datos o los archivos de registro de transacciones se han movido a ubicaciones archivadas y no están disponibles cuando se consultan. La compatibilidad con el archivado presenta optimizaciones para evitar consultar los datos archivados siempre que sea posible. También agrega nueva sintaxis para identificar los archivos que se deben restaurar desde el almacenamiento de archivos para realizar las consultas.
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. Para obtener los resultados deseados, la directiva de ciclo de vida de la nube y la configuración de delta.timeUntilArchived
deben ser iguales.
Consultas optimizadas para datos archivados
La compatibilidad con archivados en Azure Databricks optimiza las siguientes consultas en las tablas delta:
Consultar | 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. |
Instrucciones DDL y DML que sobrescriben datos o eliminan datos, incluidos los siguientes: REPLACE TABLE , INSERT OVERWRITE , TRUNCATE TABLE DROP TABLE |
Marque las entradas del registro de transacciones para los archivos de datos archivados de destino como eliminados. |
FSCK REPAIR TABLE |
Ignore los archivos archivados y compruebe solo los archivos que no hayan alcanzado la directiva de ciclo de vida. |
Consulte Limitaciones.
Mensajes anticipados de error y fallo
En el caso de las consultas que deben examinar los archivos archivados para generar resultados correctos, la configuración de la compatibilidad con archivos para Delta Lake garantiza lo siguiente:
- 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.
Habilitación de la compatibilidad con archivados
Habilite la compatibilidad con archivados en Azure Databricks para tablas delta especificando manualmente el intervalo de archivado configurado en la directiva de administración del ciclo de vida de la nube subyacente, como en la sintaxis de ejemplo siguiente:
ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');
Habilitar la compatibilidad con archivos de forma eficaz indica a Azure Databricks que omita los archivos que son anteriores al período especificado. Si habilita esta configuración sin tener establecidas directivas de ciclo de vida para el almacenamiento de objetos en la nube, Azure Databricks seguirá ignorando los archivos en función de este umbral especificado, pero no se archivará ningún dato.
Delta Lake no interactúa de forma directa con las directivas de administración del ciclo de vida configuradas en su cuenta en la nube. Si actualiza la directiva en la cuenta en la nube, debe actualizar la directiva en la tabla Delta. Consulte Cambio de la regla de transición de administración del ciclo de vida.
Importante
La compatibilidad con archivados se basa completamente en entornos de proceso de Azure Databricks compatibles y solo funciona para las tablas Delta. La configuración de la compatibilidad con archivos no cambia el comportamiento, la compatibilidad o la compatibilidad en los clientes OSS Delta Lake o Databricks Runtime 12.2 LTS o posteriores.
Mostrar archivos archivados
Para identificar los archivos que deben restaurarse para completar una consulta determinada, use SHOW ARCHIVED FILES
, como en el ejemplo siguiente:
SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];
Esta operación devuelve URI para archivos archivados como dataframe de Spark. Restaure los archivos archivados necesarios siguiendo las instrucciones documentadas del proveedor de almacenamiento de objetos. 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. De forma predeterminada, estas son las siguientes estadísticas recopiladas en las primeras 32 columnas de la tabla:
- Valores mínimos
- Valores máximos
- Recuentos null
- 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.
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.
¿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.
Limitaciones
Existen las siguientes limitaciones:
- 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
hace un esfuerzo, aunque solo funciona en archivos de vectores de eliminación y archivos de datos a los que se hace referencia que no están archivados.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 Extensión de la regla de transición de administración del ciclo de vida.
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
.
Si el intervalo de tiempo antes del archivo se acorta (menos tiempo desde la creación del archivo), la compatibilidad con el archivo para la tabla Delta sigue funcionando normalmente después de actualizar la propiedad table.
Consulte Ampliación de la regla de transición de administració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:
- Cuando cambia la directiva, todos los registros entre 60 y 90 días de antigüedad ya están archivados.
- 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).
- 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 período de retraso entre el umbral de archivado anterior y el nuevo umbral de archivado, puede adoptar uno de los métodos siguientes para evitar consultar archivos archivados:
- 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 con el ejemplo anterior, cada día de los primeros 30 días, los datos de otro día se considerarían archivados por Azure Databricks, 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
a90 days
.
- 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
en67 days
refleja con precisión la antigüedad de todos los archivos de datos archivados. - Este enfoque solo es necesario si debe acceder a todos los datos en niveles de acceso frecuente.
- 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
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.