Élagage de fichiers dynamiques

L’élagage de fichiers dynamiques peut améliorer considérablement les performances de nombreuses requêtes sur les tables Delta Lake. L’élagage des fichiers dynamiques est particulièrement efficace pour les tables non partitionnées ou pour les jointures sur des colonnes non partitionnées. L’impact sur les performances de l’élagage des fichiers dynamiques est souvent lié au clustering des données. Envisagez donc d’utiliser l'ordre Z pour en optimiser l’avantage.

Important

Vous devez utiliser le calcul compatible avec Photon pour utiliser le nettoyage dynamique des fichiers dans des instructions MERGE, UPDATE et DELETE. Seules des instructions SELECT tirent parti du nettoyage dynamique de fichiers lorsque Photon n’est pas utilisé.

Pour plus d’informations sur l’arrière-plan et les cas d'usage de l’élagage des fichiers dynamiques, consultez Accélérer les requêtes SQL sur Delta Lake avec l’élagage de fichiers dynamiques.

Configuration

DFP est contrôlé par les options de configuration Apache Spark suivantes :

  • spark.databricks.optimizer.dynamicFilePruning (valeur par défaut : true) : indicateur principal qui indique à l’optimiseur d’envoyer (push) les filtres. Lorsque la valeur est définie sur false, l’exécution de fichiers dynamiques n’est pas active.
  • spark.databricks.optimizer.deltaTableSizeThreshold (valeur par défaut : 10,000,000,000 bytes (10 GB)) : représente la taille minimale (en octets) de la table Delta du côté sonde d’intégrité de la jointure requise pour déclencher l’élagage des fichiers dynamiques. Si le côté sonde d’intégrité n’est pas très important, il n’est probablement pas judicieux d’envoyer (push) les filtres, et nous pouvons simplement analyser la table entière. Vous pouvez trouver la taille d’une table Delta en exécutant la commande DESCRIBE DETAIL table_name, puis en examinant la colonne sizeInBytes.
  • spark.databricks.optimizer.deltaTableFilesThreshold (valeur par défaut : 10 dans Databricks Runtime 8.4 et versions ultérieures, 1000 dans Databricks Runtime 8.3 et versions antérieures) : représente le nombre de fichiers de la table Delta côté sonde d’intégrité de la jointure requise pour déclencher l’élagage de fichiers dynamiques. Lorsque la table côté sonde d’intégrité contient moins de fichiers que la valeur de seuil, l’élagage de fichiers dynamiques n’est pas déclenché. Si une table ne contient que quelques fichiers, il n’est probablement pas judicieux d’activer l’élagage de fichiers dynamiques. Vous pouvez trouver la taille d’une table Delta en exécutant la commande DESCRIBE DETAIL table_name, puis en examinant la colonne numFiles.