Share via


Dynamische bestandopruiming

Dynamische bestandssnoei, kan de prestaties van veel query's op Delta Lake-tabellen aanzienlijk verbeteren. Dynamische triggers voor het verwijderen van bestanden voor query's die filterinstructies of WHERE componenten bevatten. U moet berekeningen met Photon gebruiken om dynamische bestanden te verwijderen in MERGE, UPDATEen DELETE instructies. Alleen SELECT instructies maken gebruik van dynamisch snoeien van bestanden wanneer Photon niet wordt gebruikt.

Dynamisch verwijderen van bestanden is met name efficiƫnt voor niet-gepartitioneerde tabellen of voor joins op niet-gepartitioneerde kolommen. De invloed op de prestaties van dynamische bestandssnoeien wordt vaak gecorreleerd aan de clustering van gegevens, dus overweeg om Z-Ordering te gebruiken om het voordeel te maximaliseren.

Zie Snellere SQL-query's in Delta Lake met dynamische bestandssnoeien voor achtergrond- en gebruiksvoorbeelden voor dynamische bestanden.

Configuratie

Dynamische bestandssnoei wordt bepaald door de volgende Apache Spark-configuratieopties:

  • spark.databricks.optimizer.dynamicFilePruning (standaard is true): de hoofdvlag waarmee de optimizer wordt omgeschoven naar filters. Wanneer deze is ingesteld falseop, wordt dynamisch bestandensnoeien niet van kracht.
  • spark.databricks.optimizer.deltaTableSizeThreshold (standaard is 10,000,000,000 bytes (10 GB)): Vertegenwoordigt de minimale grootte (in bytes) van de Delta-tabel aan de testzijde van de join die is vereist voor het activeren van dynamisch verwijderen van bestanden. Als de testzijde niet erg groot is, is het waarschijnlijk niet de moeite waard om de filters omlaag te duwen en we kunnen gewoon de hele tabel scannen. U kunt de grootte van een Delta-tabel vinden door de DESCRIBE DETAIL table_name opdracht uit te voeren en vervolgens naar de sizeInBytes kolom te kijken.
  • spark.databricks.optimizer.deltaTableFilesThreshold (standaard is 10): Vertegenwoordigt het aantal bestanden van de Delta-tabel aan de testzijde van de join die is vereist voor het activeren van dynamisch verwijderen van bestanden. Wanneer de tabel aan de testzijde minder bestanden bevat dan de drempelwaarde, wordt dynamisch snoeien van bestanden niet geactiveerd. Als een tabel slechts een paar bestanden heeft, is het waarschijnlijk niet de moeite waard om dynamisch bestanden te verwijderen. U kunt de grootte van een Delta-tabel vinden door de DESCRIBE DETAIL table_name opdracht uit te voeren en vervolgens naar de numFiles kolom te kijken.