Formats de fichiers et sérialisation

Row vs columnar, formats texte vs binaires, schéma embarqué et compression : bien choisir le format d'un fichier de données.

Créé le 8 août 2026·Mis à jour le 8 août 2026

Introduction


Avant même de parler d'outils, un pipeline de données transporte et stocke des fichiers. Le format choisi pour ces fichiers a un impact direct sur la vitesse de lecture, le volume de stockage et le coût des requêtes dans un entrepôt cloud facturé au volume scanné. C'est un sujet théorique simple à expliquer en entretien, mais qui révèle une vraie compréhension des enjeux du métier.

Formats orientés ligne vs orientés colonne


C'est la distinction la plus structurante entre formats de fichiers.

  • Orienté ligne (row-oriented) : les valeurs d'un même enregistrement sont stockées de façon contiguë. Efficace pour lire ou écrire un enregistrement complet (CSV, JSON, Avro).
  • Orienté colonne (columnar) : les valeurs d'une même colonne, pour tous les enregistrements, sont stockées de façon contiguë (Parquet, ORC).

💡 Bon à savoir : c'est exactement la même distinction que row store vs column store côté bases de données (voir OLTP vs OLAP), mais appliquée ici à des fichiers plutôt qu'à un moteur de base de données.

Le format colonne change tout pour l'analytique : une requête qui n'a besoin que de 3 colonnes sur 50 ne lit physiquement que ces 3 colonnes sur disque, au lieu de charger chaque ligne en entier puis d'ignorer le reste. Il permet aussi une bien meilleure compression, puisque des valeurs similaires (une même colonne) sont regroupées ensemble.

Formats texte vs formats binaires


FormatTypeLisible par un humainSchéma
CSVTexte, ligneOuiAucun (juste des colonnes positionnelles)
JSONTexte, ligne (semi-structuré)OuiImplicite, peut varier d'un enregistrement à l'autre
AvroBinaire, ligneNonEmbarqué dans le fichier, versionné
ParquetBinaire, colonneNonEmbarqué dans le fichier, versionné
ORCBinaire, colonneNonEmbarqué dans le fichier, versionné

Les formats texte sont pratiques pour l'échange, le debug et l'interopérabilité (n'importe quel outil sait lire un CSV), mais coûteux en volume et lents à parser à grande échelle. Les formats binaires sont plus compacts et rapides à lire, au prix de la lisibilité directe.

Schéma embarqué et évolution du schéma


Un fichier CSV ou JSON ne porte aucune information fiable sur les types de ses colonnes : c'est le lecteur qui doit deviner ou imposer un schéma au moment de la lecture (schema-on-read).

Avro et Parquet embarquent leur schéma directement dans le fichier (schema-on-write), ce qui permet de valider la structure dès l'écriture et de faire évoluer ce schéma de façon contrôlée dans le temps (ajout d'un champ optionnel, par exemple) sans casser les lecteurs existants. Cette capacité est ce qu'on appelle la compatibilité de schéma (backward/forward compatibility), un sujet central dès qu'un pipeline vit plusieurs mois en production.

Compression


Les formats binaires colonne se combinent avec des algorithmes de compression, appliqués par bloc de colonne plutôt que sur le fichier entier.

CodecVitesseTaux de compressionUsage typique
SnappyTrès rapideModéréDéfaut pour Parquet en pipeline actif
GzipLentÉlevéArchivage, données rarement relues
Zstandard (zstd)RapideÉlevéBon compromis, adopté de plus en plus largement

Le choix du codec est un arbitrage entre vitesse de lecture/écriture et espace de stockage économisé, à mettre en regard du coût de calcul et du coût de stockage cloud.

Panorama par cas d'usage


BesoinFormat recommandéPourquoi
Échange entre systèmes hétérogènes, APIJSONUniversel, lisible, flexible
Export simple, tableurCSVUniversel, très simple
Ingestion streaming avec schéma évolutifAvroLigne, schéma embarqué, compact
Stockage analytique dans un data lake / entrepôtParquetColonne, compression forte, lecture sélective des colonnes

Résumé


ConceptDéfinition
Row-orientedStockage contigu par enregistrement, adapté à l'écriture et à la lecture complète
ColumnarStockage contigu par colonne, adapté à la lecture sélective et à l'agrégation
Schema-on-readLe schéma est appliqué par le lecteur (CSV, JSON)
Schema-on-writeLe schéma est embarqué et validé à l'écriture (Avro, Parquet)
ParquetFormat de référence des entrepôts et data lakes modernes