Zusammenführung mit geringem Shuffle in Azure Databricks

Hinweis

Low Shuffle Merge ist ab der Databricks Runtime 10.4 ITS allgemein verfügbar (GA) und in der Databricks Runtime 9.1 LTS in der Public Preview. Databricks empfiehlt, dass Preview-Kunden zu Databricks Runtime 10.4 LTS oder höher migrieren.

Der MERGE-Befehl wird verwendet, um gleichzeitige Aktualisierungen, Einfügungen und Löschungen aus einer Delta Lake-Tabelle auszuführen. Azure Databricks verfügt über eine optimierte Implementierung von MERGE, die die Leistung für häufige Workloads erheblich verbessert, indem die Anzahl der Shuffle-Vorgänge reduziert wird.

Die Zusammenführung mit geringem Shuffle von Databricks bietet eine bessere Leistung, indem sie nicht geänderte Zeilen in einem separaten, optimierteren Verarbeitungsmodus verarbeitet, anstatt sie zusammen mit den geänderten Zeilen zu verarbeiten. Dadurch wird die Menge der geschufften Daten erheblich reduziert, wodurch die Leistung verbessert wird. Die Zusammenführung mit geringem Shuffle reduziert auch die Notwendigkeit, dass Benutzer den Befehl OPTIMIZE ZORDER BY nach dem Ausführen eines MERGE-Vorgangs erneut ausführen müssen.

Optimierte Leistung

Viele MERGE-Workloads aktualisieren nur eine relativ kleine Anzahl von Zeilen in einer Tabelle. Delta-Tabellen können jedoch nur auf Dateibasis aktualisiert werden. Wenn der MERGE-Befehl eine kleine Anzahl von Zeilen aktualisieren oder löschen muss, die in einer bestimmten Datei gespeichert sind, muss er auch alle übrigen Zeilen in derselben Datei verarbeiten und neu schreiben – auch wenn diese Zeilen unverändert bleiben. Zusammenführung mit geringem Shuffle optimiert die Verarbeitung nicht geänderter Zeilen. Zuvor wurden sie auf dieselbe Weise wie geänderte Zeilen verarbeitet, indem sie mehrere Shufflephasen und teure Berechnungen durchliefen. Bei Zusammenführung mit geringem Shuffle werden stattdessen die nicht geänderten Zeilen ohne Shuffles, teure Verarbeitung oder zusätzlichen Gemeinkosten verarbeitet.

Optimiertes Datenlayout

Neben der schnelleren Ausführung wirkt sich die Zusammenführung mit geringem Shuffle auch positiv auf nachfolgende Vorgänge aus. Die frühere MERGE-Implementierung führte dazu, dass das Datenlayout unveränderter Daten vollständig geändert wurde. Dies hatte eine Verringerung der Leistung nachfolgender Vorgänge zur Folge. Die Zusammenführung mit geringem Shuffle versucht, das bestehende Datenlayout der unveränderten Datensätze nach bestem Bemühen beizubehalten, einschließlich der Optimierung der Z-Reihenfolge. Bei der Zusammenführung mit geringem Shuffle wird die Leistung von Vorgängen für eine Delta-Tabelle also langsamer abnehmen, nachdem ein oder mehrere MERGE-Befehle ausgeführt wurden.

Hinweis

Die Zusammenführung mit geringem Shuffle versucht das Datenlayout für vorhandene Daten beizubehalten, die nicht geändert wurden. Das Datenlayout aktualisierter oder neu eingefügter Daten ist möglicherweise nicht optimal, daher kann es erforderlich sein, die Befehle OPTIMIZE oder OPTIMIZE ZORDER BY auszuführen.

Verfügbarkeit

Zusammenführung mit geringem Shuffle ist standardmäßig in Databricks Runtime 10.4 und höher aktiviert. In früheren unterstützten Databricks Runtime-Versionen kann sie aktiviert werden, indem Sie die Konfiguration spark.databricks.delta.merge.enableLowShuffle auf true festlegen. Dieses Flag hat keine Auswirkung auf die Databricks Runtime 10.4 und höher.