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 shuffle-bewerkingen te verminderen.
Databricks 'low shuffle merge' biedt betere prestaties door ongewijzigde rijen in een aparte, efficiƫntere 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. Een lage shuffle-samenvoeging vermindert ook de noodzaak voor gebruikers om de opdracht OPTIMIZE ZORDER BY opnieuw uit te voeren na een MERGE
operatie.
Geoptimaliseerde prestaties
Veel MERGE
werkbelastingen werken slechts een relatief klein aantal rijen in de tabel bij. Delta-tabellen kunnen echter alleen per bestand worden bijgewerkt. Wanneer de opdracht MERGE
een klein aantal rijen moet bijwerken of verwijderen dat in een bepaald bestand is opgeslagen, 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 samensmelting met weinig herschikkingen worden de ongewijzigde rijen verwerkt zonder herschikkingen, dure verwerking of andere extra overhead.
Geoptimaliseerde gegevensindeling
Naast sneller uitgevoerd te kunnen worden, profiteren daaropvolgende bewerkingen ook van een low shuffle-merge. De eerdere MERGE
implementatie zorgde ervoor dat de gegevensindeling van ongewijzigde gegevens volledig werd gewijzigd, wat resulteert in lagere prestaties bij volgende bewerkingen. Samenvoegen met minimale herschikking probeert de bestaande gegevensindeling van de ongewijzigde records te behouden, waaronder Z-orderoptimalisatie naar beste kunnen. Daarom zullen de prestaties van bewerkingen op een Delta-tabel met weinig shuffle-merge minder snel achteruitgaan na het uitvoeren van een of meer MERGE
commando's.
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
of OPTIMIZE ZORDER BY opdrachten uit te voeren.
Beschikbaarheid
Samenvoegen met lage shuffle is standaard ingeschakeld in Databricks Runtime 10.4 en hoger. In eerdere ondersteunde Databricks Runtime-versies kan deze worden ingeschakeld door de configuratie-spark.databricks.delta.merge.enableLowShuffle
in te stellen op true
. Deze vlag heeft geen effect in Databricks Runtime 10.4 en hoger.