Nous sommes ravis d'annoncer que la version Apache SparkTM 3.0.0 est disponible sur Databricks dans le cadre de notre nouveau Databricks Runtime 7.0. La 3.0.0 Cette version inclut plus de 3 400 correctifs et constitue l'aboutissement de contributions considérables de la part de la communauté open source, apportant des avancées majeures aux fonctionnalités Python et SQL et mettant l'accent sur la facilité d'utilisation, tant pour l'exploration que pour la production. Ces initiatives reflètent l'évolution du projet pour répondre à davantage de cas d'utilisation et à un public plus large, cette année marquant son 10e anniversaire en tant que projet open source.
Voici les principales nouvelles fonctionnalités de Spark 3.0 :
Aucune modification majeure du code n'est requise pour adopter cette version d'Apache Spark. Pour plus d'informations, veuillez consulter le guide de migration.
Célébration des 10 ans de développement et d'évolution de Spark
Spark a été créé au sein de l'AMPlab de l'UC Berkeley, un laboratoire de recherche spécialisé dans l'informatique à haute intensité de données. Les chercheurs de l'AMPlab collaboraient avec de grandes entreprises de l'internet sur leurs problématiques de données et d'IA, mais ont constaté que ces mêmes problèmes seraient également rencontrés par toutes les entreprises disposant de volumes de données importants et croissants. L'équipe a développé un nouveau moteur pour gérer ces nouvelles charges de travail et rendre simultanément les APIs de traitement du Big Data nettement plus accessibles aux développeurs.
Les contributions de la communauté ont rapidement permis d'étendre Spark à différents domaines, avec de nouvelles fonctionnalités autour du streaming, de Python et de SQL. Ces modèles constituent désormais certains des cas d'utilisation dominants de Spark. Cet investissement continu a permis à Spark de devenir ce qu'il est aujourd'hui, à savoir le moteur de facto pour les charges de travail de traitement des données, de Data Science, de machine learning et d'analytique de données. Apache Spark 3.0 poursuit cette tendance en améliorant considérablement la prise en charge de SQL et de Python -- les deux langages les plus utilisés avec Spark aujourd'hui -- ainsi que par des optimisations des performances et de l'opérabilité dans le reste de Spark.
Amélioration du moteur Spark SQL
Spark SQL est le moteur qui sous-tend la plupart des applications Spark. Par exemple, sur Databricks, nous avons constaté que plus de 90 % des appels d'API Spark utilisent les API DataFrame, dataset et SQL ainsi que d'autres bibliothèques optimisées par l'optimiseur SQL. Cela signifie que même les développeurs Python et Scala font passer une grande partie de leur travail par le moteur Spark SQL. Dans la version Spark 3.0, 46 % de tous les correctifs contribués concernaient SQL, améliorant à la fois les performances et la compatibilité ANSI. Comme illustré ci-dessous, Spark 3.0 a obtenu des performances environ 2 fois meilleures que Spark 2.4 en termes de temps d'exécution total. Ensuite, nous expliquons quatre nouvelles fonctionnalités dans le moteur Spark SQL.
Le nouveau framework Adaptive Query Execution (AQE) améliore les performances et simplifie l'optimisation en générant un meilleur plan d'exécution au moment de l'exécution, même si le plan initial n'est pas optimal en raison de statistiques de données absentes ou inexactes et de coûts mal estimés. En raison de la séparation du stockage et du compute dans Spark, l'arrivée des données peut être imprévisible. Pour toutes ces raisons, l'adaptabilité au moment de l'exécution devient plus essentielle pour Spark que pour les systèmes traditionnels. Cette version introduit trois optimisations adaptatives majeures :
D'après un benchmark TPC-DS de 3 To, par rapport à une exécution sans AQE, Spark avec AQE peut améliorer les performances de plus de 1,5x pour deux requêtes et de plus de 1,1x pour 37 autres requêtes.
L'élagage dynamique des partitions est appliqué lorsque l'optimiseur n'est pas en mesure d'identifier au moment de la compilation les partitions qu'il peut ignorer. Ce n'est pas rare dans les schémas en étoile, qui se composent d'une ou plusieurs tables de faits référençant un certain nombre de tables de dimension. Dans de telles opérations de jointure, nous pouvons élaguer les partitions que la jointure lit à partir d'une table de faits, en identifiant les partitions qui résultent du filtrage des tables de dimension. Dans un benchmark TPC-DS, 60 des 102 requêtes affichent une accélération significative entre 2x et 18x.
La conformité à la norme ANSI SQL est essentielle pour la migration des charges de travail d'autres moteurs SQL vers Spark SQL. Pour améliorer la conformité, cette version passe au calendrier grégorien proleptique et permet également aux utilisateurs d'interdire l'utilisation des mots-clés réservés d'ANSI SQL comme identifiants. De plus, nous avons introduit la vérification du dépassement de capacité à l'exécution dans les opérations numériques et l'application du typage au moment de la compilation lors de l'insertion de données dans une table avec un schéma prédéfini. Ces nouvelles validations améliorent la qualité des données.
Indications de jointure: Bien que nous continuions à améliorer le compilateur, rien ne garantit qu'il puisse toujours prendre la décision optimale dans toutes les situations — la sélection de l'algorithme de jointure est basée sur des statistiques et des heuristiques. Lorsque le compilateur est incapable de faire le meilleur choix, les utilisateurs peuvent utiliser des indications de jointure pour influencer l'optimiseur afin qu'il choisisse un meilleur plan. Cette version étend les indicateurs de jointure existants en ajoutant de nouveaux indicateurs : SHUFFLE_MERGE, SHUFFLE_HASH et SHUFFLE_REPLICATE_NL.
De nombreux développeurs Python utilisent l'API pandas pour les structures de données et l'analyse de données, mais elle est limitée au traitement sur un seul nœud. Nous avons également continué à développer Koalas, une implémentation de l'API pandas sur Apache Spark, pour rendre les data scientists plus productifs lorsqu'ils travaillent avec le big data dans des environnements distribués. Koalas élimine le besoin de créer de nombreuses fonctions (par ex., la prise en charge du traçage) dans PySpark, pour atteindre des performances efficaces sur un cluster.
Après plus d'un an de développement, la couverture de l'API Koalas pour pandas est proche de 80 %. Le nombre de téléchargements mensuels de Koalas sur PyPI a rapidement atteint 850 000, et Koalas évolue rapidement avec un rythme de publication toutes les deux semaines. Bien que Koalas soit peut-être le moyen le plus simple de migrer votre code pandas mono-nœud, beaucoup utilisent encore les API PySpark, qui gagnent également en popularité.
Spark 3.0 apporte plusieurs améliorations aux APIs PySpark :
L'amélioration du support et de l'ergonomie de Python dans Spark reste l'une de nos plus grandes priorités.
Hydrogen, streaming et extensibilité
Avec Spark 3.0, nous avons finalisé les composants clés du projet Hydrogen et introduit de nouvelles fonctionnalités pour améliorer le streaming et l'extensibilité.
Autres mises à jour de Spark 3.0
Spark 3.0 est une version majeure pour la communauté, avec plus de 3 400 tickets Jira résolus. C'est le résultat des contributions de plus de 440 contributeurs, y compris des particuliers ainsi que des entreprises comme Databricks, Google, Microsoft, Intel, IBM, Alibaba, Facebook, Nvidia, Netflix, Adobe et bien d'autres. Nous avons mis en évidence plusieurs avancées clés de Spark en matière de SQL, de Python et de streaming dans ce billet de blog, mais de nombreuses autres fonctionnalités de cette version 3.0 majeure ne sont pas abordées ici. Apprenez-en plus dans les notes de version et découvrez toutes les autres améliorations apportées à Spark, notamment les sources de données, l'écosystème, le monitoring et plus encore.
Démarrez avec Spark 3.0 dès aujourd'hui
Si vous souhaitez essayer Apache Spark 3.0 dans Databricks Runtime 7.0, inscrivez-vous pour un compte d'Essai gratuit et lancez-vous en quelques minutes. Utiliser Spark 3.0 est aussi simple que de sélectionner la version « 7.0 » lors du lancement d'un cluster.
En savoir plus sur les fonctionnalités et les détails de la version :
Notícias
December 23, 2024/8 min de leitura
Anúncios
November 19, 2025/7 min de leitura


