Catalyst - Shomira/Proyecto-PAvanzada GitHub Wiki
Catalyst tiene una biblioteca para representar arboles y aplicar reglas para manipularlos.
El optimizador Catalyst que aprovecha las características avanzadas del lenguaje de programación Scala con la finalidad de construir un optimizador de consultas y mejorar su rendimiento.
Catalyst en Spark SQL ha creado bibliotecas de nodo para tipos de datos, operadores lógicos y físicos, además de bibliotecas específicas para procesar consultas relacionales que se rigen en un plan de ejecución basado en cuatro etapas:
En cuanto a consultas empieza con una relación a calcular, puede contener referencia o relaciones de atributos sin resolver(no se conoce su tipo o no cuenta con un alias) devuelto por el analizador SQL o desde un DataFrame.
Esta basada en dos fases internas, aplica una optimización basada en reglas estandarizadas construye planes múltiples(fusionando métodos, aplicando filtros, reemplazando instrucciones) y usando un optimizador basado en costos(CBO)asigna un costo a cada plan, generando un árbol.
A los arboles generados en la Optimización lógica se le asocia un costo de cálculo y es aquí donde el planificador físico de Spark SQL elige un plan y genera un plan físico describiendo el calculo para el conjunto de datos. En esta etapa de planificación física Catalyst puede generar varios planes y compararlos en función del costo
(Michael Armbrust) afirma:
Catalyst se basa en una característica especial del Lenguaje Scala “Cuasiquotes” que permiten la construcción programática de árboles de sintaxis abstracta, entonces Catalyst permite transformar ese árbol que representa una consulta SQL en un árbol de sintaxis abstracta para código Scala y evaluar esa expresión y poder generar el código y compilarlo.