Apache Spark celebra por todo lo alto su décimo aniversario con una nueva versión. Spark 3.0 incluye un gran número de cambios que mejoran su rendimiento y amplían sus capacidades en big data, sobretodo en la exploración y en el procesamiento de los datos.
El pasado 10 de Junio se publicó la última versión de Apache Spark, la versión 3.0. Ésta es una versión llena de cambios que tendrá un gran calado sobre todo en el área de la ciencia de datos. Y demuestra que, tras diez años, el proyecto open-source de computación distribuida Apache Spark sigue en plena forma. Los cambios e iniciativas de esta última versión muestran la capacidad del proyecto para abarcar cada vez más casos de uso y audiencias más amplias. Es esta evolución la que convierte a Spark en una de las herramientas más usadas en el sector del big data y data science.
La versión 3.0 es el resultado de más de 3400 mejoras realizadas por la comunidad de código abierto. Entre los más de 440 colaboradores que han participado para hacerlo posible, podemos encontrar colaboradores individuales y compañías como Google, Microsoft, Intel, IBM, Facebook, Netflix y muchos más.
Entre las características más destacadas de Spark 3.0 encontramos:
- Mejora del rendimiento de hasta 2 veces sobre Spark 2.4, gracias a la ejecución de consultas adaptativas, la poda de partición dinámica y otras optimizaciones.
- Compatibilidad con ANSI SQL.
- Mejoras significativas en la API de Pandas.
- Mejora en el manejo de los errores de Python, simplificando las excepciones de PySpark.
- Nueva interfaz de usuario para Spark Structured Streaming.
- Aumento de hasta 40 veces la velocidad en las llamadas a UDFs de R.
Mejora del motor Spark SQL
El componente que más cambios ha recibido es Spark SQL, con un 46% de las mejoras. Aunque el resto de librerías de alto nivel de Spark también han sufrido mejoras. Todas estas optimizaciones han logrado que Spark 3.0 sea hasta dos veces más rápido que la versión anterior, Spark 2.4.
- Fusionar particiones dinámicamente (Dynamically coalescing shuffle partitions), lo que simplifica o incluso evita el ajuste del número de particiones.
- Cambiar dinámicamente estrategias de unión (Dynamically switching join strategies). Esta optimización evita planes de ejecución subóptimos, lo que simplifica el tuneo y mejora el rendimiento.
- Optimización dinámica de combinaciones sesgadas (Dynamically optimizing skew joins). Las combinaciones sesgadas pueden desbalancear las cargas de trabajo y afectar gravemente al rendimiento, por lo que con esta optimización AQE consigue una mejora general del rendimiento paralelizando estos procesos.
Mejora de las APIs de Python
La mejora del soporte y la usabilidad de Python en Spark continúa siendo una de las mayores prioridades. De hecho, Python ya es el lenguaje de programación más usado en Spark, superando a Scala. Esto muestra la importancia que se le ha dado en esta versión a la exploración y tratamiento de los datos.Esta versión mejora las funcionalidad y usabilidad en Python, incluyendo un rediseño de la API de Pandas UDF. A partir de esta versión el uso de las funciones Pandas UDF se hace más sencillo y autodescriptivo, incluyendo dos nuevas funciones: map y co-grouped map. Además se ha mejorado el tratamiento de los errores, haciéndolos más comprensible para los usuarios de PySpark.
Del mismo modo que se han añadido unas funcionalidades, también se han suprimido otras. Con la llegada de Spark 3.0 se ha eliminado el soporte a Python 2 y versiones anteriores de R 3.4, y el método UserDefinedAggregateFunction.
Mejoras en Spark Structured Streaming
Esta nueva versión de Apache Spark incluye una nueva interfaz de usuario dedicada para los trabajos en tiempo real. Esta nueva UI muestra dos conjuntos de estadísticas:
- Información agregada de consultas en streaming completadas.
- Información estadística detallada sobre las consultas en streaming.
En esta versión se introduce la monitorización tanto para aplicaciones batch como aplicaciones streaming.