Samenvoegen met lage willekeurige volgorde in Azure Databricks
Notitie
Samenvoegen met lage willekeurige volgorde is algemeen beschikbaar in Databricks Runtime 10.4 lTS en hoger en in openbare preview in Databricks Runtime 9.1 LTS. Databricks raadt aan dat preview-klanten migreren naar Databricks Runtime 10.4 LTS of hoger.
De opdracht MERGE wordt gebruikt om gelijktijdige updates, invoegingen en verwijderingen uit een Delta Lake-tabel uit te voeren. Azure Databricks heeft een geoptimaliseerde implementatie van MERGE
die de prestaties aanzienlijk verbetert voor algemene workloads door het aantal willekeurige bewerkingen te verminderen.
Databricks lage shuffle-samenvoeging biedt betere prestaties door ongewijzigde rijen in een afzonderlijke, gestroomlijndere verwerkingsmodus te verwerken in plaats van ze samen met de gewijzigde rijen te verwerken. Als gevolg hiervan wordt de hoeveelheid gegevens in willekeurige volgorde aanzienlijk verminderd, wat leidt tot verbeterde prestaties. Met een lage shuffle-samenvoegbewerking hoeven gebruikers ook de opdracht OPTIMIZE ZORDER BY opnieuw uit te voeren nadat ze een MERGE
bewerking hebben uitgevoerd.
Geoptimaliseerde prestaties
Veel MERGE
workloads werken slechts een relatief klein aantal rijen in een tabel bij. Delta-tabellen kunnen echter alleen per bestand worden bijgewerkt. Wanneer de MERGE
opdracht een klein aantal rijen moet bijwerken of verwijderen die zijn opgeslagen in een bepaald bestand, moet deze ook alle resterende rijen verwerken en herschrijven die in hetzelfde bestand zijn opgeslagen, ook al zijn deze rijen ongewijzigd. Met een lage shuffle-samenvoeging wordt de verwerking van ongewijzigde rijen geoptimaliseerd. Voorheen werden ze op dezelfde manier verwerkt als gewijzigde rijen, waarbij ze door meerdere willekeurige fasen en dure berekeningen worden doorgegeven. Bij een lage willekeurige samenvoeging worden de ongewijzigde rijen in plaats daarvan verwerkt zonder willekeurige willekeurige volgordes, dure verwerking of andere extra overhead.
Geoptimaliseerde gegevensindeling
Naast dat u sneller kunt uitvoeren, profiteert een lage willekeurige samenvoeging ook van volgende bewerkingen. De eerdere MERGE
implementatie zorgde ervoor dat de gegevensindeling van ongewijzigde gegevens volledig werd gewijzigd, wat resulteert in lagere prestaties bij volgende bewerkingen. Met een lage shuffle-samenvoeging wordt geprobeerd de bestaande gegevensindeling van de ongewijzigde records te behouden, waaronder optimalisatie van Z-volgorde op basis van best effort. Daarom worden de prestaties van bewerkingen in een Delta-tabel met weinig willekeurige volgorde langzamer verminderd na het uitvoeren van een of meer MERGE
opdrachten.
Notitie
Samenvoegen met lage willekeurige volgorde probeert de gegevensindeling te behouden voor bestaande gegevens die niet worden gewijzigd. De gegevensindeling van bijgewerkte of nieuw ingevoegde gegevens is mogelijk niet optimaal, dus het kan nog steeds nodig zijn om de OPTIMIZE
opdrachten ZORDER BY of OPTIMALISEREN uit te voeren.
Beschikbaarheid
Samenvoegen met lage willekeurige volgorde is standaard ingeschakeld in Databricks Runtime 10.4 en hoger. In eerdere ondersteunde Databricks Runtime-versies kan deze worden ingeschakeld door de configuratie in spark.databricks.delta.merge.enableLowShuffle
te stellen op true
. Deze vlag heeft geen effect in Databricks Runtime 10.4 en hoger.