Apprendre  /  Guides

DuckDB, Polars ou Spark en 2026 : quel moteur pour vos données, benchmarks à l'appui

Les trois ont publié des versions majeures ces trois dernières semaines. Nous avons lancé les mêmes requêtes sur la même machine et en avons tiré une règle simple : quel moteur choisir, et quand Spark vaut encore son coût.

Guide10 min de lectureMis à jour le 9 novembre 2026
PythonSQLBases de donnéesAnalyse de données
Tous les guides et antisèches

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.

0.20SecondeDuckDB, jointure et group-by sur 20M lignes
0.35SecondePolars, group-by sur 50 000 clés
5.3Secondespour démarrer une session Spark locale
1MillisecondeDuckDB ou Polars sur une requête minuscule

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.

Chiffre d'affaires par produit : group-by sur 20M lignes, 50 000 groupes
Polars 2.10,35 s
DuckDB 2.00,39 s
pandas 3.11,03 s
Spark 4.31,25 s

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.

Chiffre d'affaires par région : jointure avec les magasins, puis group-by
DuckDB 2.00,20 s
Polars 2.10,48 s
pandas 3.11,62 s
Spark 4.31,83 s

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

Une requête minuscule : compter par catégorie dans un fichier de 900 lignes
0,9 msPolars
1,3 msDuckDB
53 msSpark, Feather activé
85 msSpark, par défaut

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.0Polars 2.1Spark 4.3
Interface principaleSQLExpressions PythonSQL et PySpark
Plus gros que la mémoireOui, débordement sur disqueOui, moteur streaming et group-by sur disqueOui, sur un cluster
Plus gros qu'une machineNonNon (open source)Oui
StreamingNonTraitement par lots de gros fichiersOui, y compris temps réel avec état
Formats de table ouvertsIceberg, Delta, DuckLakeIceberg en lecture et écriture, DeltaIceberg et Delta, le moteur de référence
Accès partagéNouveau mode serveur QuackDans le processus uniquementSpark Connect, clusters multi-utilisateurs
Agents de code IAMode agent dans la CLI qui réduit les tokens en sortieErreurs claires, types strictsFeather accélère la boucle essai-correction

Comment choisir

  1. 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. 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. 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. 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. 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 ?

2/3Quand Spark est-il le bon choix plutôt que DuckDB ou Polars ?

3/3Que fait Project Feather dans Spark 4.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.

Alessandro Ecclesie AgazziÉcrit par Alessandro Ecclesie Agazzi, analytics engineer à Londres. Mis à jour le 9 novembre 2026. À propos

Cet article vous a été utile ?

De nouveaux guides et décryptages des nouveautés en data et en IA paraissent ici régulièrement. Suivez-moi sur LinkedIn ou partagez cet article avec un collègue.