Aller au contenu
Formats de fichiers

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

Modèle
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 condition

Exemple

Exemple concret
# 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

  1. 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.
  2. 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.
  3. 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.
  4. 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