Octobre 2026 a été un mois chargé pour les moteurs de données. DuckDB 2.0 est sorti le 21 octobre en version à support long, Polars 2.1 le 25 octobre et Apache Spark 4.3 le 30 octobre. Tous trois sont gratuits et open source, lisent Parquet et Apache Iceberg, et parlent désormais SQL. Lequel choisir ? Nous avons installé les nouvelles versions, lancé les mêmes requêtes sur les mêmes 20 millions de lignes et noté ce que nous avons appris.
Trois moteurs, trois conceptions
DuckDB 2.0
Base SQL dans un fichier- Licence
- MIT
- Style
- SQL d'abord, avec des clients Python, R, Java et Node
- Exécution
- dans votre processus, désormais aussi en petit serveur (Quack)
- Excellent SQL : jointures ASOF et NEAREST, triggers, MERGE, un type VARIANT rapide pour le JSON
- Lit Parquet, CSV, JSON, Iceberg, Delta et DuckLake, en local ou dans le cloud
- Support long au moins jusqu'en octobre 2027
- Une seule machine ; les très gros shuffles demandent encore de l'attention
Idéal pour les adeptes du SQL, les notebooks, les backends de tableaux de bord et l'analyse locale.
Polars 2.1
Bibliothèque DataFrame- Licence
- MIT
- Style
- expressions Python, plus une interface SQL qui s'étoffe
- Exécution
- dans votre processus, avec un moteur streaming par défaut
- Rapide, strict et prévisible : types et erreurs sont explicites
- Les group-by peuvent déborder sur disque quand la mémoire manque
- Écrit et gère des tables Iceberg
- Exige Python 3.11 ou plus ; certaines nouvelles API sont instables
Idéal pour les développeurs Python qui remplacent pandas.
Spark 4.3
Moteur distribué- Licence
- Apache 2.0
- Style
- SQL, DataFrames PySpark, Scala et Java
- Exécution
- sur des clusters, via Databricks, Fabric, EMR, Dataproc ou les vôtres
- Passe à l'échelle sur de nombreuses machines, jusqu'à des centaines de téraoctets
- Streaming temps réel avec état, désormais autour de 150 ms en P99
- La référence sur Databricks et Microsoft Fabric
- Des secondes de démarrage et un coût fixe par requête sur les petites données
Idéal quand une machine ne suffit plus.
Le benchmark
Nous avons généré un fichier Parquet de 20 millions de lignes de ventes (236 Mo, quatre colonnes) et une petite table de 1 000 magasins, puis lancé deux requêtes dans chaque moteur, en relisant les fichiers Parquet à chaque fois. Nous retenons la meilleure de trois exécutions. La machine était une VM cloud modeste avec 2 cœurs et 7 Go de mémoire : les chiffres absolus seront différents chez vous, c'est le classement qui compte.
Meilleure de 3 exécutions. DuckDB 2.0.0, Polars 2.1.0, pandas 3.1.0, PySpark 4.3.0 en mode local avec 2 cœurs. Chaque exécution lit le fichier Parquet.
Même machine et même méthode. La jointure ajoute 1 000 lignes de magasins à 20 millions de lignes de ventes.
Le constat est clair. Sur une seule machine, DuckDB et Polars jouent dans une autre catégorie, et le plus rapide dépend de la requête : Polars a devancé de peu DuckDB sur l'agrégation à nombreux groupes, DuckDB a été plus de deux fois plus rapide sur la jointure. pandas, qui charge tout en mémoire d'abord, a été 2,5 à 8 fois plus lent. Spark a été le plus lent, ce qui est attendu : il est conçu pour répartir le travail sur de nombreuses machines, et sur deux cœurs on mesure surtout son coût de coordination.
Petites requêtes : là où le coût fixe se voit
Le nouveau réglage Project Feather de Spark 4.3 a ramené la requête minuscule de 85 à 53 ms en évitant le shuffle, une vraie amélioration pour tester du code sur des échantillons. Mais DuckDB et Polars répondent en une milliseconde environ, et démarrer une session Spark locale a pris 5,3 secondes avant toute requête. Si vos données tiennent sur un portable, cet écart s'additionne toute la journée.
Au-delà de la vitesse
| DuckDB 2.0 | Polars 2.1 | Spark 4.3 | |
|---|---|---|---|
| Interface principale | SQL | Expressions Python | SQL et PySpark |
| Plus gros que la mémoire | Oui, débordement sur disque | Oui, moteur streaming et group-by sur disque | Oui, sur un cluster |
| Plus gros qu'une machine | Non | Non (open source) | Oui |
| Streaming | Non | Traitement par lots de gros fichiers | Oui, y compris temps réel avec état |
| Formats de table ouverts | Iceberg, Delta, DuckLake | Iceberg en lecture et écriture, Delta | Iceberg et Delta, le moteur de référence |
| Accès partagé | Nouveau mode serveur Quack | Dans le processus uniquement | Spark Connect, clusters multi-utilisateurs |
| Agents de code IA | Mode agent dans la CLI qui réduit les tokens en sortie | Erreurs claires, types stricts | Feather accélère la boucle essai-correction |
Comment choisir
- 1
Estimez votre plus grosse table
En dessous d'environ 100 Go de Parquet, une seule machine avec DuckDB ou Polars suffit en général. Au-delà du téraoctet, ou en forte croissance, prévoyez Spark ou un entrepôt cloud.
- 2
Choisissez selon la langue de l'équipe
Les adeptes du SQL sont productifs dans DuckDB en une heure. Les développeurs Python préféreront les expressions de Polars.
- 3
Regardez où tourne le traitement
Si l'entreprise utilise Databricks ou Microsoft Fabric, Spark est déjà là et géré, et les petits traitements peuvent quand même utiliser DuckDB ou Polars dans les mêmes notebooks.
- 4
Besoin de temps réel ? Prenez Spark
Ni DuckDB ni Polars ne traitent des flux d'événements avec état. Spark 4.3 le fait désormais avec une latence d'environ un dixième de seconde.
- 5
Gardez les données dans des formats ouverts
Stockez les tables en Parquet ou Iceberg pour pouvoir changer de moteur sans migrer les données.
Testez vos connaissances
1/3Dans notre test de jointure et group-by sur 20 millions de lignes, quel moteur a été le plus rapide ?
DuckDB a mis 0,20 seconde, Polars 0,48, pandas 1,62 et Spark 1,83.
2/3Quand Spark est-il le bon choix plutôt que DuckDB ou Polars ?
La force de Spark, c'est l'échelle et le streaming ; sur de petites données, son coût fixe domine.
3/3Que fait Project Feather dans Spark 4.3 ?
Dans notre test, il a ramené une requête minuscule de 85 à 53 ms.
Vous avez 0 bonne(s) réponse(s) sur 3.
Pour aller plus loin : DuckDB 2.0, Polars 2.1, Spark 4.3, l'aide-mémoire Polars et comment choisir une base de données.
Sources : annonce de DuckDB 2.0.0 (21 octobre 2026), notes de version de Polars 2.1 (25 octobre 2026) et d'Apache Spark 4.3.0 (30 octobre 2026). Les benchmarks sont les nôtres, réalisés le 9 novembre 2026 sur une VM cloud de 2 cœurs et 7 Go avec des données synthétiques ; ils sont indicatifs et ne remplacent pas un test sur votre propre charge.
