Catalyst optimizer
Le cœur de Spark SQL repose sur Catalyst optimizer, qui utilise de manière innovante des capacités avancées de codage (telles que le pattern matching et les quasiquotes de Scala) pour créer un optimiseur de requêtes extensible. Catalyst est basé sur des structures de programmation fonctionnelle en Scala et conçu avec deux objectifs clés :
- permettre une intégration aisée de nouvelles techniques et fonctionnalités d'optimisation à Spark SQL ; et
- offrir aux développeurs externes la possibilité d'étendre l'optimiseur en ajoutant des règles adaptées à leur source de données ou en prenant en charge de nouveaux types de données, entre autres.
Poursuivez votre exploration
Catalyst dispose d'une bibliothèque générale pour représenter les arbres et appliquer des règles pour les manipuler. Au-dessus de ce cadre, Catalyst a des bibliothèques spécifiques au traitement des requêtes relationnelles (expressions, plans de requêtes logiques, etc.), et plusieurs ensembles de règles qui gèrent différentes phases de l'exécution des requêtes : analyse, optimisation logique, planification physique, et génération de code pour compiler des parties de requêtes en bytecode Java. Pour ce dernier, il utilise une autre fonctionnalité Scala, les quasiquotes, qui facilite la génération de code à l'exécution à partir d'expressions composables. Catalyst offre également plusieurs points d'extension publics, y compris des sources de données externes et des types définis par l'utilisateur. De plus, Catalyst prend en charge à la fois l'optimisation basée sur les règles et l'optimisation basée sur les coûts.