Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Befehl Delta Lake MERGE ermöglicht es Benutzern, eine Delta-Tabelle mit erweiterten Bedingungen zu aktualisieren. Sie kann Daten aus einer Quelltabelle, Ansicht oder Datenframe mithilfe MERGE des Befehls in eine Zieltabelle aktualisieren. Der aktuelle Algorithmus ist jedoch nicht vollständig für die Behandlung nicht geänderter Zeilen optimiert. Bei der Optimierung der geringen Zusammenführung werden nicht geänderte Zeilen von einem teuren Shuffling-Vorgang ausgeschlossen, der für die Aktualisierung übereinstimmener Zeilen erforderlich ist.
Note
Die Zusammenführung mit geringem Shuffle ist in allen Fabric Spark-Runtimes standardmäßig verfügbar und aktiviert, um die Leistung von MERGE-Vorgängen erheblich zu verbessern.
Warum wir eine geringe Shuffle-Zusammenführung benötigen
Derzeit MERGE erfolgt der Vorgang durch zwei Join-Ausführungen. Die erste Verknüpfung verwendet die gesamte Zieltabelle und Quelldaten, um eine Liste der berührten Dateien der Zieltabelle einschließlich aller übereinstimmenden Zeilen zu finden. Danach führt sie die zweite Verknüpfung aus, die nur die berührten Dateien und Quelldaten liest, um die tatsächliche Tabellenaktualisierung zu erledigen. Obwohl die erste Verknüpfung darin besteht, die Datenmenge für die zweite Verknüpfung zu reduzieren, könnte es immer noch eine große Anzahl von nicht geänderten Zeilen in berührten Dateien geben. Die erste Verknüpfungsabfrage ist heller, da nur Spalten in der angegebenen Übereinstimmungsbedingung gelesen werden. Die zweite für die Tabellenaktualisierung muss alle Spalten laden, was zu einem kostspieligen Shuffling-Prozess führen kann.
Bei geringer Optimierung des Zusammenführens mit geringem Shuffle-Zusammenführungsergebnis behält Delta das Ergebnis der übereinstimmenen Zeile vorübergehend bei und verwendet es für die zweite Verknüpfung. Basierend auf dem Ergebnis schließt es nicht geänderte Zeilen aus dem schweren Shuffling-Prozess aus. Es würden zwei separate Schreibaufträge für übereinstimmende Zeilen und nicht geänderte Zeilen vorhanden sein, daher könnte dies zu einer 2x-Anzahl von Ausgabedateien im Vergleich zum vorherigen Verhalten führen. Der erwartete Leistungsgewinn überwiegt jedoch das mögliche Problem mit kleinen Dateien.
Vorteile der zusammenführung mit geringem Shuffle
- Nicht geänderte Zeilen in berührten Dateien werden separat behandelt und werden nicht durch den tatsächlichen MERGE-Vorgang durchlaufen. Sie kann die gesamte MERGE-Ausführungszeit und Rechenressourcen sparen. Der Gewinn wäre größer, wenn viele Zeilen kopiert werden und nur wenige Zeilen aktualisiert werden.
- Zeilenreihenfolgen werden für nicht geänderte Zeilen beibehalten. Daher könnten die Ausgabedateien von nicht geänderten Zeilen weiterhin effizient sein, um Daten zu überspringen, wenn die Datei sortiert wurde oder Z-ORDERED.
- Es würde auch für den schlimmsten Fall einen winzigen Aufwand geben, wenn die MERGE-Bedingung mit allen Zeilen in berührten Dateien übereinstimmt.
Aktivieren und Deaktivieren des Seriendrucks mit niedriger Shuffle-Funktion
Die Zusammenführung mit geringem Shuffle ist standardmäßig als Spark-Sitzungskonfiguration aktiviert: