Compartir por


Ajuste del tamaño de los archivos de datos de la tabla Delta

Los archivos de tamaño adecuado son importantes para el rendimiento de las consultas, el uso de recursos y la administración de metadatos. Los archivos más pequeños incrementan la sobrecarga y las operaciones de metadatos de las tareas, mientras que los archivos más grandes pueden infrautilizar el paralelismo y desequilibrar la E/S. Delta Lake utiliza metadatos de archivo para el recorte de particiones y el salto de datos, por lo que garantizar el tamaño de archivo adecuado asegura lecturas, escrituras y mantenimiento eficaces.

Para obtener recomendaciones sobre el tamaño de archivo según el escenario de consumo (punto de conexión de SQL Analytics, Power BI Direct Lake, Spark), consulte Optimización y mantenimiento de tablas en diferentes cargas de trabajo.

En las secciones siguientes se describen las características principales que puede usar para ajustar el tamaño de archivo en tablas Delta.

Operaciones de diseño de datos ajustables

Optimize

El OPTIMIZE comando vuelve a escribir archivos pequeños como archivos más grandes para mejorar el diseño de los datos en tablas Delta. Para obtener más detalles, incluida la información de optimización del tamaño de archivo, revise la documentación del comando OPTIMIZE .

Compactación automática

Auto Compaction evalúa automáticamente el estado de la partición después de cada operación de escritura. Cuando detecta una fragmentación excesiva de archivos (demasiados archivos pequeños) dentro de una partición, desencadena una operación sincrónica OPTIMIZE inmediatamente después de confirmar la escritura. Este enfoque controlado por el sistema de escritura para el mantenimiento de archivos suele ser óptimo porque la compactación solo se ejecuta cuando se determina mediante programación que es beneficioso. Para obtener opciones de configuración detalladas e información adicional, consulte la documentación de compactación automática .

Optimización de la escritura

Optimización de la escritura reduce la sobrecarga de archivos pequeños mediante la compactación previa a la escritura (empaquetado de binarios), generando menos, pero más grandes archivos. Este enfoque ordena los datos en memoria en contenedores de tamaño óptimo antes de que Spark escriba los archivos Parquet, maximizando el potencial de generar archivos de tamaño adecuado sin necesidad de operaciones inmediatas de limpieza posteriores a la escritura.

Usa la optimización de escritura de forma selectiva. La aleatorización puede agregar tiempo de procesamiento innecesario en algunos caminos de escritura. Optimizar la escritura es más beneficioso cuando la escritura crearía muchos archivos pequeños que posteriormente requieren compactación.

Captura de pantalla en la que se muestra cómo optimizar las escrituras produce menos archivos que se escriben.

La optimización de la escritura suele ser beneficiosa para:

  • Tablas particionadas
  • Tablas con inserciones de datos pequeñas y frecuentes
  • Operaciones que probablemente toquen muchos archivos (MERGE, UPDATEy DELETE)

Para la aplicación selectiva en tablas específicas, desactive la configuración de sesión y habilite individualmente la propiedad de la tabla. Esto permite a cada tabla controlar si se aplica la optimización de escritura.

  1. Desactivar optimización de escritura

    spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")
    
  2. Habilitar en una tabla individual

    ALTER TABLE dbo.table_name
    SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true')
    

Para habilitar la optimización de escritura para las escrituras en todas las tablas particionadas de una sesión de Spark, asegúrese de que la configuración de la sesión esté desactivada y, a continuación, establezca spark.microsoft.delta.optimizeWrite.partitioned.enabled.

SET spark.microsoft.delta.optimizeWrite.partitioned.enabled = TRUE

El tamaño del archivo de destino generado a partir de la escritura optimizada se puede ajustar a través de la spark.databricks.delta.optimizeWrite.binSize configuración.

Nota:

Consulte perfiles de recursos para la configuración de optimización predeterminada de escritura por perfil de recursos.

Establecer el tamaño de archivo de destino de forma coherente

Para evitar establecer configuraciones de sesión mínimas y máximas de tamaño de archivo para optimizar, compactar automáticamente y optimizar la escritura, use la delta.targetFileSize propiedad table. Esta propiedad unifica el comportamiento de tamaño de archivo en el nivel de tabla. Especifique el valor como una cadena de bytes (por ejemplo, 1073741824b, 1048576k, 1024m, 1g). Cuando se establece, tiene prioridad sobre las configuraciones de sesión y el tamaño del archivo de destino adaptable.

ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.targetFileSize' = '256m')

Tamaño del archivo de destino adaptable

Microsoft Fabric proporciona un tamaño de archivo de destino adaptable para eliminar la complejidad relacionada con el ajuste manual del tamaño de archivo de destino de todas las tablas de una sesión o tablas individuales a través de la propiedad de tabla delta.targetFileSize. El tamaño del archivo de destino adaptable usa heurística de tabla delta, como el tamaño de tabla, para calcular el tamaño de archivo de destino ideal y actualiza automáticamente el destino a medida que cambian las condiciones, lo que garantiza un rendimiento óptimo sin intervención manual ni sobrecarga de mantenimiento.

Habilitación del tamaño del archivo de destino adaptable

Nota:

Aunque actualmente no está habilitado de forma predeterminada, Microsoft recomienda habilitar la configuración de la sesión de tamaño de archivo de destino adaptable .

Habilite el tamaño del archivo de destino adaptable en tablas creadas o modificadas dentro de una sesión de Spark estableciendo la siguiente configuración de sesión de Spark:

SET spark.microsoft.delta.targetFileSize.adaptive.enabled = TRUE

Comprender el comportamiento de evaluación

Cuando se habilita, el tamaño del archivo de destino adaptable se evalúa y establece en los escenarios siguientes:

  • operaciones CREATE TABLE AS SELECT y CREATE OR REPLACE TABLE AS SELECT
  • Sobrescribir operaciones de escritura (por ejemplo, DataFrame.write.mode("overwrite") o INSERT OVERWRITE)
  • Escribe en el modo ErrorIfExists, Append o Ignore al crear una nueva tabla.
  • Al principio del comando OPTIMIZE

Una vez establecido, el tamaño ideal continúa reevaluando al principio de cada OPTIMIZE operación para asegurarse de que la heurística actual refleje la distribución de datos más reciente y el crecimiento de la tabla. Este enfoque adaptable actualiza automáticamente el tamaño del archivo de destino a lo largo del tiempo, lo que elimina la necesidad de optimizar manualmente mientras conserva el rendimiento de las consultas y escritura a medida que crecen los datos. Cuando necesite bloquear un tamaño específico, como en casos de uso de ajuste hiperfino o pruebas, puede anular la configuración adaptativa estableciendo explícitamente la propiedad de tabla definida por el usuario delta.targetFileSize.

Ajuste de los límites de tamaño de archivo de destino adaptable

El tamaño del archivo de destino adaptable se puede configurar aún más a través de las siguientes configuraciones de sesión de Spark:

Propiedad Description Valor predeterminado Configuración de sesión
minFileSize Especifica el tamaño mínimo de archivo (límite inferior) como una cadena de bytes que usa el tamaño de archivo de destino adaptable cuando se evalúa. Debe tener entre 128 MB y 1 GB. 128 m spark.microsoft.delta.targetFileSize.adaptive.minFileSize
maxFileSize Especifica el tamaño máximo del archivo (límite superior) como una cadena de bytes que utiliza Adaptive Target File Size al evaluarse. Debe tener entre 128 MB y 1 GB. 1024m spark.microsoft.delta.targetFileSize.adaptive.maxFileSize
stopAtMaxSize Cuando true, detiene las futuras evaluaciones de tamaño una vez que el tamaño de archivo de destino calculado alcanza maxFileSize, lo que reduce cualquier sobrecarga de evaluación en tablas muy grandes. true spark.microsoft.delta.targetFileSize.adaptive.stopAtMaxSize

Nota:

Con stopAtMaxSize habilitado (valor predeterminado), el tamaño de destino adaptable permanece fijo en el valor máximo una vez alcanzado, evitando cálculos adicionales. Si las tablas pueden reducirse después de crecer, establezca esta propiedad en false para permitir el recálculo por debajo del umbral máximo.

Inspección del tamaño de destino evaluado

Puede auditar el tamaño de archivo de destino adaptable evaluado inspeccionando los detalles de la tabla y las propiedades de DESCRIBE DETAIL o DESCRIBE EXTENDED. El valor evaluado se escribe como una cadena de bytes en la delta.targetFileSize.adaptive propiedad table.

Este valor se usa como tamaño de destino (o máximo) para optimizar, compactar automáticamente y optimizar la escritura. El valor mínimo relacionado se calcula como la mitad de delta.targetFileSize.adaptive.

Descripción del impacto en el rendimiento

En el gráfico siguiente se muestra la relación entre el tamaño de tabla y el tamaño óptimo del archivo de parquet. Para las tablas inferiores a 10 GB, Fabric Spark Runtime evalúa el tamaño del archivo de destino para que sea de 128 MB. A medida que crece el tamaño de la tabla, el tamaño del archivo de destino se escala linealmente y alcanza hasta 1 GB para las tablas que superan los 10 TB.

Gráfico que ilustra la relación entre el tamaño de tabla y el tamaño óptimo del archivo parquet.

Comenzando con archivos pequeños de 128 MB y luego escalando el tamaño de los archivos parquet a medida que una tabla crece en tamaño tiene beneficios acumulativos:

  • Se ha mejorado la omisión de archivos Delta: los archivos de tamaño correcto admiten la agrupación en clústeres de datos óptimos y la omisión, lo que permite que el protocolo de omisión de archivos de Delta elimine archivos más irrelevantes durante la ejecución de consultas. Una pequeña tabla con archivos de 128 MB en lugar de archivos de 1 GB permite omitir 8 archivos más posibles.

  • Costos de actualización reducidos: MERGE y UPDATE las operaciones solo vuelven a escribir los archivos afectados. Los archivos de tamaño adecuado minimizan el número de archivos afectados por operación, lo que reduce la cantidad de datos reescritos. Con los vectores de eliminación habilitados, el ajuste de tamaño adecuado de los archivos se convierte en fundamental: las lápidas de nivel de fila de los archivos sobredimensionados generan costos de limpieza significativos durante las operaciones de compactación o purga.

  • Paralelismo optimizado: los archivos de tamaño correcto permiten a Spark lograr paralelismo de tareas ideal. Demasiados archivos pequeños sobrecargan el planificador; demasiado pocos archivos grandes infrautilizan el grupo de Spark. El ajuste de tamaño óptimo maximiza el rendimiento de lectura y escritura.

El tamaño del archivo de destino adaptable puede mejorar el rendimiento de la compactación y la latencia de consulta y escritura cuando selecciona un tamaño mejor que la configuración predeterminada. Si la evaluación adaptable produce el mismo tamaño que la configuración predeterminada de la sesión de Spark, no se espera ninguna mejora medible.

Importante

La amplificación de escritura se produce cuando los archivos previamente compactados se vuelven a escribir a medida que aumenta el tamaño del archivo de destino con el tiempo. Para reducir este riesgo, habilite los objetivos de compactación a nivel de archivo (spark.microsoft.delta.optimize.fileLevelTarget.enabled=true). Esta configuración ayuda a conservar el trabajo de compactación anterior omitiendo la recompacción innecesaria de los archivos que ya estaban compactados en tamaños de destino anteriores. Para obtener más información, consulte los objetivos de compactación a nivel de archivo.

Resumen de los procedimientos recomendados

Use estas recomendaciones para equilibrar el costo de escritura, el rendimiento de lectura y la sobrecarga de mantenimiento a medida que crecen las tablas.

  • Habilite la compactación automática para canalizaciones de ingesta con escrituras pequeñas frecuentes (streaming o microlote) para que la salud del archivo se mantenga sin necesidad de programación manual.
  • Use la compactación automática de forma selectiva para otros patrones de escritura cuando los objetivos de nivel de servicio pueden tolerar picos ocasionales de latencia de escritura.
  • Habilite el tamaño del archivo de destino adaptable para reducir el ajuste manual y mantener los tamaños de destino alineados con el crecimiento de la tabla.
  • Use Optimizar escritura en rutas de acceso de ingesta controladas (trabajos por lotes que pueden tolerar orden aleatorio, escrituras con particiones o escrituras pequeñas frecuentes) para reducir la presión de compactación de bajada.
  • Programe la tabla OPTIMIZE completa durante las ventanas silenciosas cuando necesite reescribir muchas particiones o aplicar el orden Z.
  • Habilite la optimización rápida para reducir la amplificación de escritura y hacer OPTIMIZE más idempotente. Consulte optimización rápida.
  • Utilice delta.targetFileSize o el tamaño de archivo objetivo de adaptación constante para que optimización, compactación automática y convergencia de escritura optimizada alcancen objetivos de tamaño de archivo compatibles.
  • Habilite los destinos de compactación de nivel de archivo para reducir la recompacción innecesaria a medida que los tamaños de archivo de destino aumentan con el tiempo.