Parquet
Parquet range les valeurs colonne par colonne, compressées et accompagnées de statistiques. C'est le format de référence pour stocker des données qu'on va surtout lire et agréger.
- colonnaire
- compression
- row group
- statistiques
- pushdown
- zstd
- snappy
Syntaxe
fichier.parquet├── groupe de lignes 1 (row group)│ ├── colonne date_vente → pages compressées + min/max│ ├── colonne magasin → pages compressées + min/max│ └── colonne montant → pages compressées + min/max├── groupe de lignes 2 …└── pied de fichier : schéma, nombre de lignes, statistiquesLecture efficace : projection → ne lire que les colonnes demandées filtre → sauter les groupes dont le min/max exclut la conditionExemple
# Bibliothèque : pyarrowimport pyarrow as paimport pyarrow.parquet as pqventes = pa.table({ "date_vente": ["2026-10-01", "2026-10-01", "2026-10-02"], "magasin": ["Lyon", "Nantes", "Lyon"], "montant": [120.0, 75.5, 98.0],})pq.write_table(ventes, "ventes.parquet", compression="zstd")# On ne lit que deux colonnes, et seulement les ventes de Lyonlyon = pq.read_table( "ventes.parquet", columns=["magasin", "montant"], filters=[("magasin", "=", "Lyon")],)print(lyon.num_rows, lyon.column_names)# 2 ['magasin', 'montant']print(pq.read_schema("ventes.parquet").field("montant").type)# double (le type est conservé dans le fichier)À retenir
- Les colonnes à peu de valeurs distinctes (pays, statut) bénéficient de l'encodage par dictionnaire : elles occupent souvent une petite fraction de leur taille en CSV.
- Triez les données sur la colonne la plus filtrée avant d'écrire : les plages min/max des groupes de lignes deviennent étroites et le moteur en saute davantage.
- Un fichier Parquet ne se modifie pas : changer une ligne, c'est réécrire le fichier. Pour des mises à jour et suppressions fiables, on pose un format de table (Iceberg, Delta) par-dessus.
- Piège : écrire des milliers de fichiers de quelques kilo-octets. Chaque fichier coûte une ouverture et un pied à lire ; visez des fichiers de l'ordre de la centaine de mégaoctets.
Voir aussi
- Formats de fichiers : CSV, JSON, Avro, ParquetLe format d'un fichier décide de ce qui coûte cher : écrire, lire, typer ou faire évoluer. On choisit CSV ou JSON pour échanger, Avro pour des messages, Parquet pour analyser.
- Partitionnement et élagagePartitionner range les fichiers d'une table dans des dossiers selon une colonne, souvent la date. Les requêtes qui filtrent sur cette colonne ne lisent alors que les dossiers utiles.
- Lakehouse : Iceberg et Delta LakeIceberg et Delta ajoutent aux fichiers Parquet d'un lac un journal de versions : transactions ACID, mises à jour et voyage dans le temps. On les adopte pour un entrepôt bâti sur un lac.
- DuckDB : analyser des fichiers en SQLDuckDB est une base analytique embarquée qui interroge directement des fichiers Parquet, CSV ou JSON en SQL. Idéale pour explorer, tester un pipeline ou traiter des volumes moyens en local.