Aller au contenu principal

Low shuffle Merge on Databricks

remarque

La fusion à faible brassage est disponible de manière générale (GA) dans Databricks Runtime 10,4 LTS et versions ultérieures et en préversion publique dans Databricks Runtime 9.1 LTS. Databricks recommande aux clients en préversion de migrer vers Databricks Runtime 10,4 LTS ou version ultérieure.

La commande MERGE est utilisée pour effectuer des mises à jour, des insertions et des suppressions simultanées depuis une table Delta Lake. Databricks dispose d'une implémentation optimisée de MERGE qui améliore considérablement les performances pour les charges de travail courantes en réduisant le nombre d'opérations de shuffle.

La fonction Merge à faible brassage de Databricks offre de meilleures performances en traitant les lignes non modifiées dans un mode de traitement séparé et plus optimisé, au lieu de les traiter avec les lignes modifiées. En conséquence, la quantité de données brassées est considérablement réduite, ce qui entraîne une amélioration des performances. La fonction Merge à faible brassage réduit également le besoin pour les utilisateurs de réexécuter OPTIMIZE après avoir effectué une opération MERGE.

Performances optimisées

De nombreuses charges de travail MERGE ne mettent à jour qu'un nombre relativement faible de lignes dans une table. Cependant, les tables Delta ne peuvent être mises à jour que fichier par fichier. Lorsque la commande MERGE doit mettre à jour ou supprimer un petit nombre de lignes stockées dans un fichier particulier, elle doit également traiter et réécrire toutes les lignes restantes stockées dans le même fichier, même si ces lignes ne sont pas modifiées. La Low shuffle Merge optimise le traitement des lignes non modifiées. Auparavant, elles étaient traitées de la même manière que les lignes modifiées, en les faisant passer par plusieurs étapes de shuffle et des calculs coûteux. Dans une Merge à faible brassage, les lignes non modifiées sont traitées sans aucun brassage, traitement coûteux ou autre surcoût ajouté.

Layout de données optimisé

Le Merge à faible brassage est plus rapide à exécuter et bénéficie aux Opérations ultérieures. L'implémentation MERGE précédente a entièrement modifié le Layout des données non modifiées, dégradant les performances lors des Opérations ultérieures. Low shuffle Merge préserve le Layout des données existant des enregistrements non modifiés, y compris le Layout de clustering liquide, dans la mesure du possible ; les performances se dégradent plus lentement après l'exécution d'une ou plusieurs commandes MERGE.

remarque

Le Merge à faible brassage tente de préserver la data Layout sur les données existantes qui ne sont pas modifiées. Le layout des données mises à jour ou nouvellement insérées pourrait ne pas être optimal, il pourrait donc être encore nécessaire d'exécuter OPTIMIZE sur les tables avec le clustering liquide activé.

Disponibilité

La fusion à faible brassage est activée par default dans Databricks Runtime 10.4 et versions ultérieures. Dans les versions antérieures prises en charge de Databricks Runtime, elle peut être activée en définissant la configuration spark.databricks.delta.merge.enableLowShuffle sur true. Ce drapeau n'a aucun effet dans Databricks Runtime 10.4 et versions ultérieures.

Z-ordering hérité

Pour les tables utilisant Z-ordering, le merge en brassage réduit tente également de préserver le layout Z-order existant sur les données non modifiées, dans la mesure du possible. Le Layout des données mises à jour ou nouvellement insérées peut ne pas être optimal, il peut donc être encore nécessaire d'exécuter OPTIMIZE ZORDER BY après une opération MERGE. Databricks vous recommande d'utiliser le clustering liquide pour toutes les nouvelles tables.