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
, UPDATE
en 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 istrue
): de hoofdvlag waarmee de optimizer wordt omgeschoven naar filters. Wanneer deze is ingesteldfalse
op, wordt dynamisch bestandensnoeien niet van kracht.spark.databricks.optimizer.deltaTableSizeThreshold
(standaard is10,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 deDESCRIBE DETAIL table_name
opdracht uit te voeren en vervolgens naar desizeInBytes
kolom te kijken.spark.databricks.optimizer.deltaTableFilesThreshold
(standaard is10
): 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 deDESCRIBE DETAIL table_name
opdracht uit te voeren en vervolgens naar denumFiles
kolom te kijken.