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.