Le format Parquet
🚧
https://www.icem7.fr/outils/parquet-devrait-remplacer-le-format-csv/ https://www.datacamp.com/fr/tutorial/apache-parquet https://www.snowflake.com/fr/fundamentals/parquet/
Lecture/Ecriture Compression Chargement en mémoire Métadonnées Usages à l’INSEE, Big Data…
1 Parquet ?
Parquet est un format de stockage de données orienté colonne : les valeurs sont stockées colonne par colonne.
Ce n’est pas un format que l’on “écrit” à la main, mais un format que l’on génère via des outils de programmation (Python/Pandas, R, Spark, SQL).
L’avantage majeur : Si vous avez un dataset de 100 colonnes mais que votre analyse ne porte que sur la colonne Age, un moteur de lecture (comme Pandas ou Spark) ne lira que les octets correspondant à la colonne Age. En CSV, vous seriez obligé de lire tout le fichier.
2 Pourquoi utiliser Parquet ?
Contrairement aux formats orientés lignes (CSV, JSON), Parquet est conçu pour les charges de travail analytiques (OLAP) où l’on lit rarement toute la table, mais seulement quelques colonnes.
Stocker les données par colonne permet :
- de ne lire que les colonnes utiles lors d’une requête (
column pruning), - d’appliquer des algorithmes de compression adaptés aux valeurs similaires,
- d’activer l’exécution vectorisée (
SIMD) dans les moteurs modernes.
4 Utilisation typique
- Data Lakes : format natif de référence pour S3, ADLS, GCS
- Moteurs de calcul : Apache Spark, DuckDB, Pandas (
pyarrow), Dask, Polars - Couches de table moderne : Apache Iceberg, Delta Lake, Hudi (utilisent Parquet comme format physique)
- BI & Analytics : connexion native dans Tableau, Power BI, Metabase, Superset
5 Avantages & Inconvénients
| ✅ Avantages | ❌ Inconvénients |
|---|---|
| 📉 Compression 5 à 10x supérieure au CSV | 🔒 Écrase difficilement une ligne (design append-only) |
| ⚡ Lectures analytiques accélérées (vectorisées) | 🐢 Pas adapté à la lecture/écriture en mode transactionnel |
| 📐 Schéma strict & auto-descriptif | 🧩 Requiert des bibliothèques compatibles (PyArrow, Parquet-cpp, etc.) |
| 🌐 Interopérable (Python, R, Java, Scala, SQL…) | 📦 Fichier monolithique : difficile à modifier partiellement |
3 Comment est-il construit ?
Parquet est un format binaire structuré hiérarchiquement :
Row GroupChaque colonne utilise des encodages spécialisés (Dictionary, RLE, Delta, ByteStreamSplit) puis une compression par page (Snappy, GZIP, ZSTD). Les métadonnées incluent automatiquement les statistiques par
Row Group(min, max, null count), permettant des optimisations comme lepredicate pushdown.