Samenvoegen met lage willekeurige volgorde op 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. Bij een kleine shuffle merge hoeven gebruikers OPTIMIZE na het uitvoeren van een MERGE bewerking niet opnieuw uit te voeren.

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

Samenvoegen met lage willekeurige volgorde verloopt sneller en profiteert van volgende bewerkingen. De eerdere MERGE implementatie heeft de gegevensindeling van ongewijzigde gegevens volledig gewijzigd, waardoor de prestaties bij volgende bewerkingen afnemen. Met lage shuffle-samenvoeging wordt de oorspronkelijke gegevensstructuur van de ongewijzigde records, inclusief de structuur voor vloeibare clustering, zo goed mogelijk behouden, waardoor de prestaties geleidelijk afnemen na het uitvoeren van een of meer 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 OPTIMIZE uit te voeren op tabellen met ingeschakelde vloeibare clustering.

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.

Verouderde Z-volgorde

Voor tabellen die Z-volgorde gebruiken, probeert een low-shuffle-merge ook de bestaande Z-volgorde-indeling van ongewijzigde gegevens op basis van *best-effort* te behouden. De gegevensindeling van bijgewerkte of nieuw ingevoegde gegevens is mogelijk niet optimaal, dus het kan nog steeds nodig zijn om ZOPTIMIZE na een bewerking uit te voerenORDER BY.MERGE Databricks raadt het gebruik van vloeibare clustering aan voor alle nieuwe tabellen.