Ya disponible en Databricks Runtime 19 Beta
por Wenchen Fan, Andreas Neumann, Serge Rielau, Szehon Ho, Gengliang Wang, Linhong Liu, Hyukjin Kwon, Jerry Peng, DB Tsai, Xiao Li y Reynold Xin
Apache Spark 4.2 integra una mayor parte de la pila moderna de datos e AI en el propio motor. Basada en Spark 4.x, esta versión añade métricas gobernadas, primitivas vectoriales y top-K, una ruta de Python más orientada a Arrow, captura de datos de cambios de primer nivel y bases operativas y de streaming más sólidas.
Esto hace que Spark sea más útil en ambos lados de una aplicación de AI. Mejora la calidad y la frescura de los datos suministrados a los agentes de AI, y facilita que las aplicaciones y los agentes invoquen a Spark como un servicio de ejecución remota. La propuesta de AI es concreta: semántica de confianza, primitivas de recuperación nativas, datos de cambios actualizados e interfaces abiertas para la computación a escala de Spark.
Spark 4.2 se puede entender a través de cuatro ventajas:
En conjunto, estos cambios ayudan a las organizaciones a usar un único motor abierto para preparar datos, definir el significado empresarial, recuperar el contexto relevante y mantener actualizadas las aplicaciones analíticas y de AI.
Spark 4.2 introduce las vistas de métricas, lo que aporta una capa semántica nativa a Spark SQL. Los equipos pueden definir las métricas de negocio una sola vez y usarlas de manera coherente en cuadros de mando, informes, aplicaciones y herramientas de AI.
Esto es importante porque muchas métricas clave no se pueden sumar de forma segura. Los ratios, los recuentos distintos, la retención y medidas similares pueden producir resultados incorrectos cuando cada consumidor reescribe la fórmula con un nivel de detalle diferente. Las vistas de métricas convierten las dimensiones y las medidas en objetos de primer nivel que Spark comprende, lo que permite al motor preservar la semántica de agregación prevista.
Una de las ventajas de definir una vista de métricas es que los usuarios pueden consultar las mismas medidas gobernadas mediante diferentes dimensiones:
Para las aplicaciones de AI, esto es especialmente importante. Un agente no debería calcular los ingresos de forma diferente a un cuadro de mando ni devolver una respuesta distinta cuando un usuario cambia la agrupación solicitada. Una vista de métricas gobernada proporciona a SQL, BI y AI una única fuente de verdad, con el análisis de Spark, la resolución del catálogo y los permisos aplicados de manera coherente.
Spark Connect separa el cliente del servidor de Spark a través de un protocolo basado en gRPC y Arrow. Un cliente crea un plan lógico, el servidor lo analiza y lo ejecuta, y los resultados se devuelven como lotes de Arrow. El cliente no necesita un entorno de ejecución de Spark completo ni una JVM ubicada en el mismo lugar.
Esto facilita la integración de Spark en notebooks, servicios, herramientas de desarrollo y aplicaciones de AI. Un agente o aplicación puede llamar a Spark desde su propio entorno de ejecución, mientras que Spark mantiene el análisis, la optimización, la ejecución y la gobernanza en el servidor.
Spark 4.2 sigue reduciendo la brecha de compatibilidad con Spark Classic. Las mejoras incluyen una mejor compatibilidad con la API de RDD, entradas de DataFrame para spark.read.* y SparkSession.emptyDataFrame, depuración mejorada, propagación de errores, informes de estado y soporte para el modo de clúster de YARN. En conjunto, estos cambios hacen que PySpark y Spark Connect sean más rápidos, más compatibles y más fáciles de operar a escala y de forma remota.
Python sigue siendo una de las principales formas en que los usuarios crean cargas de trabajo de datos y AI con Spark. En Spark 4.2, la ejecución de UDF de Python optimizadas para Arrow está habilitada de forma predeterminada, por lo que las UDF existentes pueden usar la ruta columnar más rápida sin necesidad de reescribir el código. El soporte para Pandas 3 también facilita la actualización de los entornos de Python junto con Spark.
Para el código que requiere más control, las UDF de Arrow mantienen los datos en matrices de PyArrow y evitan una conversión innecesaria a Pandas. Spark también amplía la generación de perfiles y la depuración para la ejecución de Python, lo que incluye la generación de perfiles de tiempo y memoria para Python Data Sources, diagnósticos mejorados de los workers y registros que se pueden consultar como datos.
Spark 4.2 también mejora la interoperabilidad a través de Arrow C Data Interface y el protocolo PyCapsule. Cuando ambos lados lo admiten, los DataFrames de Spark pueden moverse a herramientas nativas de Arrow como Polars o DuckDB sin copiar ni serializar los datos subyacentes. Esto reduce el código de acoplamiento entre el procesamiento a escala de Spark y el ecosistema más amplio de Python y AI.
Las Python Data Sources reducen aún más la fricción de integración. Los equipos pueden crear lectores y escritores por lotes o de streaming en Python, registrarlos una vez y usarlos a través de la interfaz estándar de origen de datos de Spark. En la versión 4.2, la generación de perfiles facilita el ajuste y el funcionamiento de estos conectores en lugar de tratarlos como cajas negras.
Spark 4.2 añade nuevas primitivas de SQL para la búsqueda de similitud de vectores, el ranking y el análisis de series temporales. Esta versión introduce funciones de distancia y similitud de vectores, normalización de vectores, agregación de vectores y NEAREST BY, una unión de ranking top-K para coincidencias basadas en la distancia. Estas primitivas permiten la recuperación, las recomendaciones, la resolución de entidades y la generación de candidatos a escala.
Los tipos integrados GEOMETRY y GEOGRAPHY y las funciones ST_* permiten realizar análisis basados en la ubicación sin extensiones espaciales externas. Spark 4.2 también añade soporte para Parquet, WKT/WKB, preservación de SRID y conversión a Python.
Con Spark 4.2, puedes invocar de forma inequívoca las funciones proporcionadas por Spark calificándolas con SYSTEM.BUILTIN. Siguiendo el precedente de las variables de sesión, también puedes calificar completamente las vistas temporales con SYSTEM.SESSION. Esto es útil para evitar ambigüedades con las funciones definidas por el usuario o las relaciones persistentes, y para prevenir inyecciones.
Spark 4.2 añade soporte para la ruta de búsqueda de SQL con SET PATH, lo que facilita la resolución de tablas, funciones y variables en diferentes espacios de nombres, así como en bibliotecas de objetos, simplemente agregando esquemas a la ruta.
Spark persiste la ruta de SQL en vistas y funciones de SQL para una resolución de nombres predecible.
A partir de Spark 4.2, los scripts de SQL pueden usar DECLARE, OPEN, FETCH y CLOSE para los cursores. Esto permite un mayor control sobre el procesamiento fila por fila de los conjuntos de resultados, lo que en el pasado requería salir de SQL para usar DataFrames.
Spark SQL también añade Tuple sketches, time_bucket para el análisis de series temporales, un soporte más amplio del tipo TIME en varios formatos de archivo, QUALIFY para filtrar resultados de ventanas, Top-K max_by y min_by, y soporte de IGNORE NULLS y RESPECT NULLS para funciones de agregación comunes.
En conjunto, estas adiciones hacen que Spark SQL sea más expresivo para las aplicaciones analíticas modernas.
Spark 4.2 introduce el soporte de Auto CDC en Spark Declarative Pipelines (SDP), lo que aporta un procesamiento de SCD (dimensiones de cambio lento) de tipo 1 de primer nivel a Spark. Antes de Auto CDC, consumir un feed de cambios y aplicarlo a una tabla de destino requería una lógica de fusión escrita a mano que podía volverse compleja y propensa a errores fácilmente, debido a la gestión de eliminaciones y eventos de cambio desordenados. Con Auto CDC, los usuarios pueden simplemente configurar cómo deben actualizar los eventos de CDC una tabla de destino y dejar que Spark gestione las complejidades.
Auto CDC proporciona a la API de Python una forma de aplicar cambios de CDC a una tabla de destino de SCD de tipo 1. Está diseñado para cargas de trabajo comunes de ingesta y replicación en las que se debe mantener de forma fiable la última versión de cada registro, como perfiles de clientes, catálogos de productos, registros de cuentas y datos de referencia operativos.
Por ejemplo, ahora un flujo de Auto CDC se puede expresar de forma declarativa:
Además de Auto CDC, Spark Declarative Pipelines también recibe un importante fortalecimiento de la plataforma, que incluye un manejo más seguro en el lado del servidor para el análisis inmediato e identificadores estructurados para flujos. Juntos, estos cambios hacen que el desarrollo de pipelines declarativos sea más confiable y proporcionan a Spark una base para patrones de ingeniería de datos de nivel superior.
Real-Time Mode (RTM) en Structured Streaming permite que las consultas de streaming procesen datos con una latencia de extremo a extremo de milisegundos. Esto ha ayudado a Spark a habilitar tipos de casos de uso completamente nuevos y se está convirtiendo en la base para aplicaciones de datos operativos como la detección de fraudes, la personalización, la observabilidad y la ingeniería de características en tiempo real.
En Spark 4.2, ampliamos RTM a PySpark: ahora puede ejecutar consultas de streaming sin estado (sin Python UDF) en Real-Time Mode. Python es una opción popular entre los científicos e ingenieros de datos por su facilidad de uso, y esto acerca el procesamiento de baja latencia de RTM a un público mucho más amplio.
De cara al próximo lanzamiento de Spark 4.x, estamos incorporando soporte con estado (stateful) a RTM, y el trabajo ya está en marcha. Este esfuerzo se está siguiendo en SPARK-54699 con tres componentes principales:
Más allá del soporte con estado, también estamos trabajando para habilitar las Python UDF (SPARK-57237) en RTM.
¡Esté atento! Agradecemos sus comentarios y contribuciones.
Spark 4.2 marca otro gran paso adelante para Data Source V2. DSv2 se está convirtiendo en la base estándar para los conectores que exponen lecturas, escrituras, operaciones a nivel de fila, evolución de esquemas, datos de cambios, métricas de operación y transacciones a través de Spark.
Spark 4.2 añade soporte de captura de datos de cambios (CDC) de primer nivel a DSv2. Los conectores pueden exponer flujos de cambios a través de una API estándar, y los usuarios pueden consultarlos con la nueva cláusula SQL CHANGES, las API de DataFrame y las vinculaciones de PySpark. Spark también gestiona el postprocesamiento común en el motor: descarta los remanentes de copia en escritura (copy-on-write), detecta actualizaciones y calcula los cambios netos por fila. La misma consulta se comporta de manera uniforme en cualquier conector DSv2 que admita CDC.
Spark 4.2 mejora aún más el soporte para operaciones DML a nivel de fila en los conectores Data Source V2 (DSv2). MERGE INTO recibe mejoras de rendimiento adicionales, incluida la generación de código para toda la etapa (whole-stage code generation), junto con nuevas mejoras en las capacidades de evolución de esquemas introducidas en Spark 4.1.
La evolución de esquemas ahora también es compatible con las operaciones INSERT INTO, tanto para la resolución de columnas basada en nombres como en posiciones, lo que reduce la fricción al escribir en tablas en evolución. Además, los resúmenes de operaciones ahora están disponibles para UPDATE y DELETE, complementando los resúmenes de MERGE INTO añadidos en Spark 4.1. Las métricas de MERGE INTO también se han ampliado y refinado.
Spark 4.2 introduce bloques de construcción adicionales para conectores DSv2 de nivel de producción y formatos de tabla de lakehouse. Las adiciones clave incluyen las bases de una API de transacciones, filtrado mejorado de estadísticas de partición, mejoras en los joins particionados por almacenamiento (storage-partitioned joins) y una mayor alineación entre los comandos y comportamientos de DSv1 y DSv2. Juntas, estas mejoras hacen de DSv2 una plataforma más completa para implementar conectores de lakehouse, formatos de tabla transaccionales y otros sistemas de datos a gran escala.
Spark 4.2 incluye varias mejoras en la plataforma que facilitan la operación, depuración, seguridad y escalabilidad de Spark. La Web UI de Spark recibe una importante modernización con Bootstrap 5, modo oscuro, mejor visualización del plan de SQL, mejoras en la línea de tiempo de las consultas y paginación en el lado del servidor. El soporte para Kubernetes mejora con la gestión de ejecutores heterogéneos, API estables de gestión de recursos y una reducción de la sobrecarga del plano de control. Spark 4.2 también añade soporte para JDK 25, mejora la seguridad web, escala el Spark History Server y actualiza dependencias clave como Scala, Parquet, ORC, Arrow, Netty y Hadoop.
Spark 4.2 refleja la fuerza de la comunidad de Apache Spark, con más de 1900 commits de más de 260 colaboradores. Agradecemos a todos los que contribuyeron con código, revisiones, pruebas, documentación y comentarios para hacer posible este lanzamiento.

Descargue Apache Spark 4.2 desde spark.apache.org/downloads y consulte las notas de lanzamiento completas de Apache Spark 4.2 para ver la lista completa de cambios. Apache Spark 4.2 también estará disponible en Databricks Runtime 19 Beta.

(Esta entrada del blog ha sido traducida utilizando herramientas basadas en inteligencia artificial) Publicación original
Suscríbete a nuestro blog y recibe las últimas publicaciones directamente en tu bandeja de entrada.