in

Optimisation des performances de l’opérateur Union Spark: Conseils pour améliorer la vitesse de requête | par Chengzhi Zhao | Avr, 2023


BOOSTING SPARK UNION OPERATOR PERFORMANCE: OPTIMIZATION TIPS FOR IMPROVED QUERY SPEED

Le Spark union operator, utilisé pour fusionner deux data frames en un seul, est une opération pratique pour fusionner des lignes avec le même ordre de colonnes. Cependant, peu de gens connaissent le piège de performance associé. Si l’on ne comprend pas ce piège, cela pourrait doubler le temps d’exécution pour obtenir le résultat souhaité.

Dans cet article, nous allons nous concentrer sur le Spark DataFrame union operator, montrer le plan de requête physique et partager des techniques d’optimisation pour améliorer la performance.

COMPRENDRE L’UNION OPERATION

Comme dans les bases de données relationnelles, la fonction union combine des lignes de data frames. Il est important de noter que les données doivent avoir la même structure pour être combinées. Le nombre de colonnes doit être identique, les types de données de colonne doivent correspondre et les noms de colonne doivent suivre la même séquence pour chaque data frame.

UNION OPERATION – UTILISATIONS COURANTES

Une utilisation courante est de diviser un data frame en plusieurs sous-ensembles, d’appliquer différentes transformations, puis de les combiner en un data frame final. Par exemple, on peut diviser une table de fait en deux, appliquer différentes transformations, puis les combiner en une seule table.

PERFORMANCE DE L’UNION OPERATION

Le Spark data frame utilise l’optimiseur Catalyst qui génère un plan d’exécution optimal pour exécuter le job Spark efficacement. Cet optimiseur a été grandement amélioré ces dernières années pour améliorer les performances de la fonction de jointure. Toutefois, si l’on utilise l’union sur des sources de données entièrement différentes, l’opérateur union peut devenir un goulot d’étranglement potentiel, car Catalyst ne peut pas identifier les data frames partagés pour les réutiliser. Dans ce cas, Spark prend chaque data frame comme une branche séparée et effectue tout à partir de la racine plusieurs fois.

OPTIMISER LA PERFORMANCE

Pour optimiser la performance de l’union operation, il est recommandé d’appeler explicitement un cache pour persister le data frame fusionné en mémoire. Cela permet à Catalyst de connaître le raccourci pour récupérer les données au lieu de les retourner à la source.

Il est recommandé d’ajouter un cache() avant les transformations les plus coûteuses. Le plan de requête optimisé réduira alors le nombre de stages à exécuter. Cela peut économiser beaucoup de temps si les data frames originaux sont divisés en plus petits ensembles de données et ensuite fusionnés.

CONCLUSION

En somme, l’union operation dans Spark peut être un goulot d’étranglement potentiel pour les performances des requêtes. En utilisant des techniques d’optimisation telles que l’appel de cache(), on peut améliorer considérablement la performance. Il est important de comprendre les pièges de performance pour développer efficacement du code Spark.

Sources:
– Goodbye Hell of Unions in Spark SQL: https://databricks.com/session_eu19/goodbye-hell-of-unions-in-spark-sql
– Handling Data Skew Part of Spark Performance: https://towardsdatascience.com/handling-data-skew-part-of-spark-performance-2ee3b8275668

What do you think?

Written by Barbara

Leave a Reply

Your email address will not be published. Required fields are marked *

HolidayHero – Améliorez l’expérience de vos invités.

Le ralentissement en douceur de la réinitialisation de l’économie mondiale avec la fin de l’ère de l’argent bon marché.