Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les fichiers de taille appropriée sont importants pour les performances des requêtes, l’utilisation des ressources et la gestion des métadonnées. Les fichiers plus petits augmentent la surcharge des tâches et les opérations de métadonnées, tandis que les fichiers plus volumineux peuvent sous-utiliser le parallélisme et les E/S asymétriques. Delta Lake utilise des métadonnées de fichier pour l’élagage de partition et l’effacement des données, de sorte que le ciblage de la taille de fichier appropriée garantit des lectures, des écritures et une maintenance efficaces.
La section suivante montre comment utiliser différentes fonctionnalités de réglage de taille de fichier pour obtenir des performances pour vos tables Delta.
Opérations de disposition des données paramétrables
Optimiser
La OPTIMIZE commande réécrit de petits fichiers en tant que fichiers plus volumineux pour améliorer la disposition des données dans les tables Delta. Pour plus d’informations, notamment les informations de paramétrage de taille de fichier, consultez la documentation de la commande OPTIMIZE .
Compactage automatique
Compactage automatique évalue automatiquement l’intégrité de la partition après chaque opération d’écriture. Lorsqu’il détecte une fragmentation excessive des fichiers (trop de petits fichiers) dans une partition, il déclenche une opération synchrone OPTIMIZE immédiatement après la validation de l’écriture. Cette approche pilotée par l’enregistreur pour la maintenance des fichiers est généralement optimale, car le compactage s’exécute uniquement lorsqu’il est déterminé par programme comme avantageux. Pour obtenir des options de configuration détaillées et des informations supplémentaires, consultez la documentation relative au compactage automatique .
Optimiser l’écriture
L’optimisation de l’écriture réduit la surcharge des petits fichiers en effectuant un compactage en pré-écriture (empaquetage des compartiments), ce qui génère moins de fichiers plus volumineux. Cette approche déchique les données en mémoire dans des bacs de taille optimale avant que Spark n’écrive les fichiers Parquet, ce qui optimise le potentiel de génération de fichiers de taille appropriée sans nécessiter d’opérations de nettoyage post-écriture immédiates.
L'optimisation de l'écriture doit être utilisée avec prudence, car le coût de calcul lié au réarrangement des données peut ajouter un temps de traitement excessif et inutile à certains scénarios d'écriture. L’optimisation de l’écriture est bénéfique lorsqu’une opération d’écriture produit autrement de petits fichiers qui seraient candidats à la compaction ultérieurement.
L’optimisation de l’écriture est couramment bénéfique pour :
- tables partitionnées ;
- Tables avec de fréquentes petites insertions
- Opérations susceptibles de toucher de nombreux fichiers (
MERGE,UPDATEetDELETE)
Pour une application sélective sur des tables spécifiques, annulez la configuration de session et activez la propriété de table individuellement. La réinitialisation de la configuration au niveau de la session permet aux sessions Spark de différer vers chaque table si l’optimisation de l’écriture doit être appliquée.
Annuler l'optimisation de l'écriture
spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")Activer sur une table individuelle
ALTER TABLE dbo.table_name SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true')
Pour activer les écritures dans toutes les tables partitionnées de la session Spark, vérifiez que la configuration de session n’est pas définie, puis activez la configuration de session spark.microsoft.delta.optimizeWrite.partitioned.enabled :
La taille du fichier cible générée à partir de l’écriture optimisée peut être ajustée via la spark.databricks.delta.optimizeWrite.binSize configuration.
Note
Consultez les profils de ressources pour connaître les paramètres d’écriture d’optimisation par défaut par profil de ressource.
Définition cohérente de la taille du fichier cible
Pour éviter de devoir définir la configuration de session de taille de fichier cible minimale et maximale pour optimiser, compacter automatiquement et optimiser l’écriture, Microsoft Fabric fournit la delta.targetFileSize propriété de table comme moyen d’unifier toutes les configurations de disposition de données associées au niveau de la table. La valeur de taille du fichier cible est entrée sous forme de chaîne d’octets (par exemple, 1073741824b, 1048576k, 1024m, 1g). Quand elle est spécifiée, elle est prioritaire sur toutes les autres configurations de session et la taille de fichier cible adaptative.
ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.targetFileSize' = '256m')
Taille de fichier cible adaptative
Microsoft Fabric fournit une taille de fichier cible adaptative pour éliminer la complexité liée au réglage manuel de la taille de fichier cible de toutes les tables d’une session ou d’une table individuelle via la delta.targetFileSize propriété de table. La taille de fichier cible adaptative utilise des heuristiques de table Delta telles que la taille de table pour estimer la taille de fichier cible idéale et met automatiquement à jour la cible à mesure que les conditions changent, garantissant des performances optimales sans intervention manuelle ni surcharge de maintenance.
Note
Bien qu’il ne soit pas activé par défaut, Microsoft recommande d’activer la configuration de la session de taille de fichier cible adaptative .
Activez la taille de fichier cible adaptative sur les tables créées ou modifiées dans une session Spark en définissant la configuration de session Spark suivante :
Lorsqu’elle est activée, la taille de fichier cible adaptative est évaluée et définie dans les scénarios suivants :
- Opérations
CREATE TABLE AS SELECTetCREATE OR REPLACE TABLE AS SELECT - Remplacer les écritures (par exemple,
DataFrame.write.mode("overwrite")ouINSERT OVERWRITE) - Écrit en mode
ErrorIfExists,AppendouIgnorelors de la création d’une table - Au début de la
OPTIMIZEcommande
Une fois définie, la taille idéale continue de réévaluer au début de chaque OPTIMIZE opération pour s’assurer que les heuristiques actuelles reflètent la dernière distribution des données et la croissance des tables. Cette approche adaptative met automatiquement à jour la taille de fichier cible au fil du temps, en supprimant la nécessité d’un réglage manuel tout en préservant les performances de requête et d’écriture à mesure que vos données augmentent. Lorsque vous avez besoin de verrouiller une taille spécifique, par exemple dans les cas d'utilisation d'hyper-tuning ou de test, vous pouvez remplacer le paramètre adaptatif en définissant explicitement la propriété de table définie par l'utilisateur delta.targetFileSize.
La valeur de taille de fichier cible adaptative évaluée peut être auditée en exécutant DESCRIBE DETAIL ou DESCRIBE EXTENDED sur la table. La taille évaluée adaptative est stockée sous forme de chaîne d’octets dans la delta.targetFileSize.adaptive propriété de table. Cette valeur est utilisée comme configuration de taille maximale ou cible pour optimiser, compacter automatiquement et optimiser l’écriture. La valeur minimale utilisée par les configurations associées est calculée à la moitié de delta.targetFileSize.adaptive.
La taille de fichier cible adaptative peut être configurée par le biais des configurations de session Spark suivantes :
| Propriété | Descriptif | Valeur par défaut | Configuration de session |
|---|---|---|---|
| minFileSize | Spécifie la taille de fichier minimale (limite inférieure) sous forme de chaîne d’octets utilisée par la taille de fichier cible adaptative lors de l’évaluation. Doit être compris entre 128 Mo et 1 Go. | 128 m | spark.microsoft.delta.targetFileSize.adaptive.minFileSize |
| maxFileSize | Spécifie la taille de fichier maximale (limite supérieure) sous forme de chaîne d’octets utilisée par la taille de fichier cible adaptative lorsqu’elle est évaluée. Doit être compris entre 128 Mo et 1 Go. | 1024m | spark.microsoft.delta.targetFileSize.adaptive.maxFileSize |
| stopAtMaxSize | Quand true, arrête d’autres évaluations de taille une fois que la taille de fichier cible calculée atteint le maxFileSize, réduisant toute surcharge d’évaluation sur des tables très volumineuses. |
true | spark.microsoft.delta.targetFileSize.adaptive.stopAtMaxSize |
Note
Avec stopAtMaxSize activé (valeur par défaut), la taille cible adaptative reste fixe à la valeur maximale une fois atteinte, ce qui évite les calculs supplémentaires. Si vos tables peuvent diminuer après la croissance, définissez cette propriété sur false pour permettre le recalcul au-dessous du seuil maximal.
Le graphique suivant illustre la relation entre la taille de table et la taille de fichier Parquet optimale. Pour les tableaux inférieurs à 10 Go, le runtime Fabric Spark évalue la taille de fichier cible de 128 Mo. À mesure que la taille de la table augmente, la taille du fichier cible augmente de manière linéaire, atteignant jusqu'à 1 Go pour les tables qui dépassent 10 To.
En commençant petit à 128 Mo puis en augmentant progressivement la taille des fichiers Parquet à mesure que la taille d'une table augmente, on obtient des avantages en cascade.
Amélioration du saut de fichier Delta : les fichiers correctement dimensionnés prennent en charge le clustering de données optimal et le saut de fichier, ce qui permet au protocole d'ignorer les fichiers Delta afin de mieux éliminer les fichiers inutiles pendant l'exécution de la requête. Une petite table avec des fichiers de 128 Mo au lieu de 1 Go permet un saut de fichier 8 fois plus fréquent.
Réduction des coûts de mise à jour :
MERGEetUPDATEles opérations réécritent uniquement les fichiers affectés. Les fichiers de taille appropriée réduisent le nombre de fichiers touchés par opération, ce qui réduit la quantité de données réécrites. Lorsque les vecteurs de suppression sont activés, le dimensionnement de fichiers approprié devient critique : les pierres tombales au niveau des lignes dans les fichiers surdimensionnés entraînent des coûts de nettoyage significatifs pendant les opérations de compactage ou de vidage.Parallélisme optimisé : les fichiers de taille droite permettent à Spark d’obtenir un parallélisme de tâche idéal. Trop de petits fichiers surchargent le planificateur ; un nombre insuffisant de gros fichiers ne tire pas pleinement parti de votre pool Spark. Le dimensionnement optimal optimise le débit de lecture et d’écriture.
La taille de fichier cible adaptative peut améliorer les performances de compactage de 30 à 60% et fournir des requêtes et des écritures plus rapides lorsqu’elle sélectionne une taille de fichier plus optimale que la taille par défaut. Si l’évaluation adaptative génère la même taille que la configuration de session Spark par défaut, il n’y a aucune amélioration attendue des performances.
Important
Pour éviter l’amplification d’écriture, où les fichiers déjà compactés sont réécrits lorsque la taille de fichier cible adaptative augmente au fur et à mesure que votre table croît, activez l'option des cibles de compactage au niveau du fichier. Cette fonctionnalité empêche les fichiers compactés sous des tailles cibles adaptatives antérieures d’être redimensionnés inutilement. Pour plus d’informations, consultez la documentation sur les cibles de compactage au niveau du fichier.
Résumé des bonnes pratiques
-
Activez le compactage automatique pour les pipelines d’ingestion avec de fréquentes petites écritures (streaming ou micro-lots) afin d’éviter la planification manuelle et de conserver automatiquement les fichiers compactés.
- Pour d’autres modèles d’écriture, il peut être utile d’activer en tant qu’assurance contre l’accumulation de petits fichiers, mais peser si vos objectifs de niveau de service de traitement des données tolèrent des pics périodiques dans le temps de traitement.
- Activez la taille de fichier cible adaptative pour supprimer les estimations autour des tailles de fichiers cibles optimales.
- Utilisez Optimiser l’écriture dans des chemins d’ingestion contrôlés (travaux de traitement par lots qui peuvent tolérer un shuffle, des scénarios de partitionnement ou de petites écritures fréquentes) pour réduire la création de petits fichiers et les coûts de maintenance en aval. Le compactage avant écriture (optimisation de l'écriture) a tendance à être moins coûteux que le compactage après écriture (optimisation).
- Planifiez des opérations de table
OPTIMIZEcomplète pendant les fenêtres silencieuses lorsque vous devez réécrire de nombreuses partitions ou exécuter Z-Order. - Activez l’optimisation rapide pour réduire l’amplification de l’écriture et rendre
OPTIMIZEplus idempotent (voir optimisation rapide). - Utilisez
delta.targetFileSizeou de préférence la taille de fichier cible adaptative pour maintenir la cohérence des valeurs de taille de fichier cible entre les fonctionnalités de disposition des données et les sessions Spark. - Activez les cibles de compactage au niveau du fichier pour empêcher l’amplification de l’écriture à mesure que les tables augmentent en taille et utilisent des tailles de fichiers cibles plus grandes.