Aprender  /  Guías

DuckDB frente a Polars frente a Spark en 2026: qué motor para tus datos, con benchmarks

Los tres publicaron versiones importantes en las últimas tres semanas. Ejecutamos las mismas consultas en la misma máquina y convertimos los resultados en una regla sencilla: qué motor usar y cuándo Spark sigue compensando su coste.

Guía10 min de lecturaActualizado el 9 de noviembre de 2026
PythonSQLBases de datosAnálisis de datos
Todas las guías y chuletas

Octubre de 2026 fue un mes intenso para los motores de datos. DuckDB 2.0 salió el 21 de octubre como versión de soporte prolongado, Polars 2.1 el 25 de octubre y Apache Spark 4.3 el 30 de octubre. Los tres son gratuitos y de código abierto, leen Parquet y Apache Iceberg y ya hablan SQL. ¿Cuál usar? Instalamos las nuevas versiones, ejecutamos las mismas consultas sobre los mismos 20 millones de filas y apuntamos lo que aprendimos.

0.20SegundosDuckDB, join y group-by sobre 20M de filas
0.35SegundosPolars, group-by sobre 50.000 claves
5.3Segundospara arrancar una sesión local de Spark
1MilisegundoDuckDB o Polars en una consulta mínima

Tres motores, tres diseños

DuckDB 2.0

Base de datos SQL en un archivo
Licencia
MIT
Estilo
SQL primero, con clientes para Python, R, Java y Node
Dónde se ejecuta
en tu proceso, y ahora también como pequeño servidor (Quack)
  • SQL excelente: joins ASOF y NEAREST, triggers, MERGE y un tipo VARIANT rápido para JSON
  • Lee Parquet, CSV, JSON, Iceberg, Delta y DuckLake, en local o en el almacenamiento en la nube
  • Soporte prolongado al menos hasta octubre de 2027
  • Una sola máquina; los shuffles muy grandes aún requieren cuidado

Ideal para quien usa SQL, notebooks, backends de paneles y análisis en local.

Polars 2.1

Librería DataFrame
Licencia
MIT
Estilo
expresiones en Python, más una interfaz SQL en crecimiento
Dónde se ejecuta
en tu proceso, con motor streaming por defecto
  • Rápido, estricto y predecible: tipos y errores son explícitos
  • Los group-by pueden volcar a disco cuando falta memoria
  • Escribe y gestiona tablas Iceberg
  • Requiere Python 3.11 o superior; algunas API nuevas son inestables

Ideal para desarrolladores de Python que sustituyen a pandas.

Spark 4.3

Motor distribuido
Licencia
Apache 2.0
Estilo
SQL, DataFrames de PySpark, Scala y Java
Dónde se ejecuta
en clústeres, con Databricks, Fabric, EMR, Dataproc o propios
  • Escala en muchas máquinas, hasta cientos de terabytes
  • Streaming en tiempo real con estado, ahora en torno a 150 ms P99
  • El estándar en Databricks y Microsoft Fabric
  • Segundos de arranque y coste fijo por consulta con datos pequeños

Ideal cuando una máquina no basta.

El benchmark

Generamos un archivo Parquet con 20 millones de filas de ventas (236 MB, cuatro columnas) y una tabla pequeña de 1.000 tiendas, y ejecutamos dos consultas en cada motor, leyendo los archivos Parquet cada vez. Indicamos la más rápida de tres ejecuciones. La máquina era una VM en la nube modesta con 2 núcleos y 7 GB de memoria, así que en la tuya las cifras absolutas serán otras: lo que importa es el orden.

Ingresos por producto: group-by sobre 20M de filas, 50.000 grupos
Polars 2.10,35 s
DuckDB 2.00,39 s
pandas 3.11,03 s
Spark 4.31,25 s

La más rápida de 3 ejecuciones. DuckDB 2.0.0, Polars 2.1.0, pandas 3.1.0, PySpark 4.3.0 en modo local con 2 núcleos. Cada ejecución lee el archivo Parquet.

Ingresos por región: join con las tiendas y después group-by
DuckDB 2.00,20 s
Polars 2.10,48 s
pandas 3.11,62 s
Spark 4.31,83 s

Misma máquina y método. El join añade 1.000 filas de tiendas a 20 millones de filas de ventas.

El resultado es claro. En una sola máquina, DuckDB y Polars juegan en otra liga, y cuál es más rápido depende de la consulta: Polars se adelantó un poco en la agregación con muchos grupos y DuckDB fue más del doble de rápido en el join. pandas, que carga todo en memoria primero, fue entre 2,5 y 8 veces más lento. Spark fue el más lento, como era de esperar: está pensado para repartir el trabajo entre muchas máquinas, y con dos núcleos sobre todo se mide su coste de coordinación.

Consultas pequeñas: donde se nota el coste fijo

Una consulta mínima: contar filas por categoría en un archivo de 900 filas
0,9 msPolars
1,3 msDuckDB
53 msSpark, Feather activado
85 msSpark, por defecto

El nuevo ajuste Project Feather de Spark 4.3 bajó la consulta mínima de 85 a 53 ms al evitar el shuffle, una mejora real para probar código con muestras. Pero DuckDB y Polars responden en alrededor de un milisegundo, y arrancar una sesión local de Spark tardó 5,3 segundos antes de ejecutar ninguna consulta. Si tus datos caben en un portátil, esa diferencia se acumula durante todo el día.

Más allá de la velocidad

DuckDB 2.0Polars 2.1Spark 4.3
Interfaz principalSQLExpresiones en PythonSQL y PySpark
Más grande que la memoriaSí, vuelca a discoSí, motor streaming y group-by que vuelcan a discoSí, en un clúster
Más grande que una máquinaNoNo (código abierto)Sí
StreamingNoProcesamiento por lotes de archivos grandesSí, también en tiempo real con estado
Formatos de tabla abiertosIceberg, Delta, DuckLakeIceberg en lectura y escritura, DeltaIceberg y Delta, el motor de referencia
Acceso compartidoNuevo modo servidor QuackSolo en el procesoSpark Connect, clústeres multiusuario
Agentes de IA para códigoModo agente en la CLI que reduce tokens de salidaErrores claros, tipos estrictosFeather acelera el ciclo de probar y corregir

Cómo elegir

  1. 1

    Estima tu tabla más grande

    Por debajo de unos 100 GB de Parquet suele bastar una sola máquina con DuckDB o Polars. Si llegas a los terabytes o creces deprisa, planifica Spark o un almacén de datos en la nube.

  2. 2

    Elige según el lenguaje del equipo

    Quien piensa en SQL es productivo con DuckDB en una hora. Quien desarrolla en Python preferirá las expresiones de Polars.

  3. 3

    Mira dónde se ejecuta el trabajo

    Si la empresa usa Databricks o Microsoft Fabric, Spark ya está ahí y gestionado, y los trabajos pequeños pueden usar DuckDB o Polars en los mismos notebooks.

  4. 4

    ¿Necesitas tiempo real? Usa Spark

    Ni DuckDB ni Polars procesan flujos de eventos con estado. Spark 4.3 ya lo hace con una latencia de alrededor de una décima de segundo.

  5. 5

    Guarda los datos en formatos abiertos

    Almacena las tablas en Parquet o Iceberg para poder cambiar de motor sin migrar datos.

Pon a prueba lo que has aprendido

1/3En nuestra prueba de join y group-by sobre 20 millones de filas, ¿qué motor fue el más rápido?

2/3¿Cuándo es Spark la opción adecuada frente a DuckDB o Polars?

3/3¿Qué hace Project Feather en Spark 4.3?

Profundiza: DuckDB 2.0, Polars 2.1, Spark 4.3, la chuleta de Polars y cómo elegir una base de datos.

Fuentes: anuncio de DuckDB 2.0.0 (21 de octubre de 2026), notas de versión de Polars 2.1 (25 de octubre de 2026) y de Apache Spark 4.3.0 (30 de octubre de 2026). Los benchmarks son nuestros, realizados el 9 de noviembre de 2026 en una VM en la nube con 2 núcleos y 7 GB y datos sintéticos; son orientativos y no sustituyen una prueba con tu propia carga.

Alessandro Ecclesie AgazziEscrito por Alessandro Ecclesie Agazzi, analytics engineer en Londres. Actualizado el 9 de noviembre de 2026. Sobre mí

¿Te ha resultado útil?

Aquí se publican con regularidad nuevas guías y artículos sobre las novedades en datos e IA. Sígueme en LinkedIn o comparte este artículo con un compañero.