Apache Spark es un framework de computación en clúster open source que proporciona una interfaz para la programación de clusters completos con Paralelismo de datos implícito y tolerancia a fallos, el cual el código base del proyecto Spark fue donado a la Apache Software Foundation que se encarga de su mantenimiento.
Apache Spark se puede considerar un sistema de computación en clúster de propósito general y orientado a la velocidad.
Proporciona APIs en Java, Scala, Python y R, además de que también proporciona un motor optimizado que soporta la ejecución de grafos en general.
También soporta un conjunto extenso y rico de herramientas de alto nivel entre las que se incluyen Spark SQL (para el procesamiento de datos estructurados basada en SQL), MLlib para implementar machine learning, GraphX para el procesamiento de grafos y Spark Streaming.
Spark SQL es el módulo Apache Spark para trabajar con datos estructurados y es muy popular en las aplicaciones Spark. Según Databricks, la compañía fundada por los creadores de Apache Spark, incluso los desarrolladores Python y Scala hacen gran parte de su trabajo con el motor Spark SQL.
Spark es hoy el marco de facto para el procesamiento de big data, ciencia de datos, aprendizaje automático y análisis de datos.
Sobre Apache Spark 3.0
Actualmente el framework se encuentra en su version 3.0 y entre las nuevas características más importantes, debe tenerse en cuenta que Spark 3.0 es dos veces más rápido que la version anterior al confiar en TPC-DS, entre otros.
Este aumento de rendimiento se logró a través de mejoras como la ejecución de consultas adaptativas, la poda de particiones dinámicas y otras optimizaciones. También se ha mejorado el cumplimiento del estándar ANSI SQL.
Spark 3.0 es una versión principal con más de 3400 tickets resueltos, pero dentro de los principales cambios, solamente se limitan a las nuevas características principales para SQL y Python, entre otras.
Apache Spark 3.0 fortalece esta posición al mejorar considerablemente el soporte para SQL y Python, los dos lenguajes más utilizados con Spark en la actualidad y al brindar muchas optimizaciones en todos los niveles.
PySpark, la API de Spark para Python, tiene más de 5 millones de descargas mensuales en PyPI, el índice del paquete de Python. Muchos desarrolladores de Python usan la API para el análisis de datos, aunque se limita al procesamiento de un solo nodo.
Python fue, por lo tanto, un área clave de desarrollo para Spark 3.0. Se ha acelerado el desarrollo de la API sobre Apache Spark, para que los científicos de datos sean más productivos cuando trabajan con grandes datos en entornos distribuidos.
Koalas elimina la necesidad de crear muchas funciones (por ejemplo, soporte de gráficos) en PySpark, para obtener un mejor rendimiento en un clúster.
Hasta ahora, podemos decir que Spark su rol a menudo se limita al de un ETL (Extract Transform Load).
Esto da como resultado en particular mejoras significativas en las API, incluidas sugerencias de tipo Python y UDF de pandas adicionales (funciones definidas por el usuario).
Spark 3.0 ofrece un mejor manejo de errores de Python, y las llamadas a funciones R definidas por el usuario son hasta 40 veces más rápidas.
Además hay que destacar que en Spark 3.0, el 46% de todas las correcciones fueron para la funcionalidad de SQL, que ha mejorado tanto el rendimiento como la compatibilidad ANSI.
Dicho esto, las tres nuevas características más importantes en el motor Spark SQL son la ejecución de consultas adaptativas.
Los métodos de optimización de consultas generalmente se centran en la optimización de consultas estáticas.
Debido a la separación del almacenamiento y el procesamiento en Spark, la llegada de datos puede ser impredecible. Por estas razones, la ejecución de consultas adaptativas se vuelve más crucial para Spark que para los sistemas tradicionales.
Hay muchas otras características que puede consultar en las notas de la versión. Características que cubren fuentes de datos, ecosistemas, monitoreo, depuración y más.
Puedes consultar la nota del lanzamiento dirigiéndote al el siguiente enlace.
Fuente: https://spark.apache.org/