Catalyst - Shomira/Proyecto-PAvanzada GitHub Wiki

CATALYST OPTIMIZER

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:

1) Etapa de Análisis de un plan lógico

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.

2) Etapa de Optimización Lógica

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.

3) Etapa de Planificación física

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

4) Etapa de Código de GENERACION

(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.

⚠️ **GitHub.com Fallback** ⚠️