Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
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.
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,UPDATEyDELETE)
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.
Desactivar optimización de escritura
spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")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.
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:
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 SELECTyCREATE OR REPLACE TABLE AS SELECT - Sobrescribir operaciones de escritura (por ejemplo,
DataFrame.write.mode("overwrite")oINSERT OVERWRITE) - Escribe en el modo
ErrorIfExists,AppendoIgnoreal 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.
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:
MERGEyUPDATElas 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
OPTIMIZEcompleta 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
OPTIMIZEmás idempotente. Consulte optimización rápida. -
Utilice
delta.targetFileSizeo 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.