Delen via


Dynamisch bestand verwijderen

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 Photon-ingeschakelde rekenkracht gebruiken om dynamische bestandssnoeiing te gebruiken in MERGE, UPDATEen DELETE verklaringen. 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 bij 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 op Delta Lake met dynamische bestandssnoeienvoor achtergrond- en gebruiksvoorbeelden voor dynamisch verwijderen van bestanden.

Configuratie

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

  • spark.databricks.optimizer.dynamicFilePruning (standaard is true): De hoofdvlag die de optimizer instrueert om filters door te geven. Wanneer deze is ingesteld op false, wordt dynamisch bestand verwijderen 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 opdracht DESCRIBE DETAIL table_name uit te voeren en vervolgens naar de kolom sizeInBytes te kijken.
  • spark.databricks.optimizer.deltaTableFilesThreshold (standaard is 10): geeft het aantal bestanden van de Delta-tabel aan de probezijde van de join aan die nodig is om dynamisch snoeien van bestanden te activeren. 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 opdracht DESCRIBE DETAIL table_name uit te voeren en vervolgens naar de kolom numFiles te kijken.