Zusammenführung mit geringem Shuffle in Azure Databricks

Hinweis

Die Zusammenführung mit geringem Shuffle ist in Databricks Runtime 10.4 LTS und höher allgemein verfügbar (GA) und in Databricks Runtime 9.1 LTS als öffentliche Vorschau verfügbar. Databricks empfiehlt, dass Preview-Kunden zu Databricks Runtime 10.4 LTS oder höher migrieren.

Der BEFEHL MERGE 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.

Databricks low shuffle merge bietet eine bessere Leistung, indem unmodifizierte Zeilen in einem separaten, optimierteren Verarbeitungsmodus verarbeitet werden, anstatt sie zusammen mit den geänderten Zeilen zu verarbeiten. Somit wird die Menge der durchmischten Daten erheblich reduziert, was zu einer verbesserten Leistung führt. Die Zusammenführung mit geringem Shuffle verringert auch die Notwendigkeit für Benutzer, OPTIMIZE nach dem Ausführen eines MERGE-Vorgangs erneut auszuführen.

Optimierte Leistung

Viele MERGE Workloads aktualisieren nur eine relativ kleine Anzahl von Zeilen in einer Tabelle. Delta-Tabellen können jedoch nur pro Datei 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 verbleibenden Zeilen verarbeiten und neu schreiben, die in derselben Datei gespeichert sind, auch wenn diese Zeilen unverändert sind. 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

Die Zusammenführung mit geringem Shuffle lässt sich schneller ausführen und kommt nachfolgenden Vorgängen zugute. Die frühere MERGE Implementierung hat das Datenlayout von nicht geänderten Daten vollständig geändert, was die Leistung bei nachfolgenden Vorgängen beeinträchtigt. Die Zusammenführung mit geringem Shuffle behält das vorhandene Datenlayout der nicht geänderten Datensätze, einschließlich des Liquid-Clustering-Layouts, nach bestem Wissen und Gewissen bei. Die Leistung nimmt nach dem Ausführen eines oder mehrerer MERGE-Befehle langsamer ab.

Hinweis

Die Zusammenführung mit geringem Shuffle versucht das Datenlayout für vorhandene Daten beizubehalten, die nicht geändert wurden. Das Datenlayout von aktualisierten oder neu eingefügten Daten ist möglicherweise nicht optimal, daher kann es dennoch erforderlich sein, OPTIMIZE auf Tabellen mit aktiviertem Liquid Clustering auszuführen.

Verfügbarkeit

Zusammenführung mit geringem Shuffle ist standardmäßig in Databricks Runtime 10.4 und höher aktiviert. In früher unterstützten Databricks-Runtime-Versionen kann sie durch Festlegen der Konfiguration spark.databricks.delta.merge.enableLowShuffle auf trueaktiviert werden. Dieses Kennzeichen hat keine Auswirkung in Databricks Runtime 10.4 und höher.

Veraltete Z-Sortierung

Bei Tabellen, die Z-Reihenfolge verwenden, versucht die Zusammenführung mit geringem Shuffle auch, das vorhandene Z-Reihenfolge-Layout für nicht geänderte Daten nach bestem Wissen und Gewissen beizubehalten. Das Datenlayout aktualisierter oder neu eingefügter Daten ist möglicherweise nicht optimal. Daher kann es dennoch erforderlich sein, OPTIMIZE ZORDER BY nach einem MERGE-Vorgang auszuführen. Databricks empfiehlt die Verwendung von Flüssigclustering für alle neuen Tabellen.