# Migrar de Apache Spark 3 a Spark 4: lo que cambia y cómo prepararte

- **Publicado el:** 2026-05-28
- **Categoría:** Noticias
- **Página original:** https://linuxgratis.com/articulos/migrar-apache-spark-3-a-spark-4

Canonical publica una guía para pasar de Apache Spark 3 a Spark 4. Te contamos los requisitos de Scala y Java, el modo ANSI SQL por defecto y la estrategia de migración por fases.

---

Rob Gibbon, de Canonical, ha publicado una guía para quienes mantienen cargas de datos y analítica sobre Apache Spark y tienen que dar el salto a la versión 4. No es un cambio menor: Spark 4 rompe compatibilidad en varios puntos que conviene mirar antes de tocar nada en producción.

Lo primero que vas a notar son los requisitos de versión. Scala 2.12 deja de estar soportado, así que toca migrar a Scala 2.13. En el lado de Java, la versión 17 pasa a ser la base recomendada y también funciona con Java 21; cualquier cosa por debajo de Java 17 queda fuera. Si tu pipeline arrastra dependencias antiguas, este es el punto que más trabajo te va a dar. Para la parte de Scala, el post menciona Scalafix, una herramienta open source que automatiza buena parte de los cambios de código.

## Cambios que rompen compatibilidad

El más sonado es el modo ANSI SQL activado por defecto. Hasta ahora, una división por cero o un cast de tipo inválido te devolvía `NULL` y seguía adelante. En Spark 4, esas mismas operaciones lanzan una excepción en tiempo de ejecución. Es más estricto y más correcto, pero si tu código asumía el comportamiento antiguo, vas a ver fallos donde antes no los había.

El logging también cambia: ahora la salida estructurada en JSON es la opción por defecto. Si tienes sistemas de monitorización que parsean los logs en texto plano, prepárate para ajustarlos. Además, los imports `javax.*` hay que sustituirlos por `jakarta.*` para mantener la compatibilidad con servlets y XML, y RocksDB pasa a ser el backend por defecto para shuffle y para la gestión de estado en structured streaming.

## Lo que ganas

No todo es trabajo. Spark 4 incorpora el tipo de dato VARIANT para datos semiestructurados como JSON, con mejor rendimiento en las consultas. Llega también la sintaxis de pipe en SQL con el operador `|>` para encadenar operaciones, y SQL procedural con scripts multi-sentencia, variables locales y control de flujo (lógica `IF`/`WHILE`). Por el lado de la IA, suma tipos de dato vectoriales e inferencia LLM por lotes optimizada.

## Cómo plantear la migración

La guía recomienda hacerlo por fases en lugar de cambiarlo todo de golpe:

1. **Cambios de base.** Actualiza Java y Scala, y valida los conectores de terceros.
2. **Validación en ejecución.** Activa el modo ANSI SQL ya en Spark 3 para detectar problemas antes de migrar, y reemplaza las operaciones de riesgo por alternativas seguras como `try_cast`.
3. **Modernización de los habilitadores.** Prueba los nuevos valores por defecto de RocksDB en streaming y valida tus sentencias `CREATE TABLE`.

En cuanto al orden de despliegue, la recomendación es empezar por las cargas batch, seguir con las de streaming y dejar para el final las analíticas y de soporte a la decisión. Tiene sentido: las batch son más fáciles de reejecutar y comparar resultados si algo sale mal.

Si despliegas Spark sobre Kubernetes, Canonical ofrece su solución Charmed para Apache Spark con Java 17 y 21 ya preconfigurados, además de opciones de soporte. Como suele pasar con su catálogo, encaja de forma natural si ya trabajas sobre [Ubuntu](/ubuntu).

## Fuente

Guía publicada por Rob Gibbon en el blog de Canonical: [Migrating from Apache Spark 3 to Spark 4](https://ubuntu.com/blog/migrating-from-apache-spark-3-to-spark-4). Contenido y producto de Canonical.
