Formats de fichiers : CSV, JSON, Avro, Parquet
Le 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.
- csv
- json
- jsonl
- avro
- parquet
- ligne
- colonne
- schéma
Syntaxe
Format Orientation Schéma Lisible Usage typique──────── ──────────── ──────────────────── ──────── ─────────────────────────────CSV ligne aucun (tout texte) oui export tableur, échange simpleJSON(L) ligne implicite, souple oui API, événements imbriquésAvro ligne embarqué et typé non messages Kafka, schéma qui évolueParquet colonne embarqué et typé non analyse, lac de données, entrepôtRègle de décision : on écrit enregistrement par enregistrement → format ligne (JSONL, Avro) on lit quelques colonnes sur beaucoup de lignes → format colonne (Parquet) un humain doit ouvrir le fichier → CSV ou JSON, en bout de chaîneExemple
Trois flux arrivent dans le lac de données d'une enseigne de distribution.1. Le fournisseur envoie son catalogue chaque matin, depuis un tableur. → CSV accepté en entrée, avec séparateur, encodage (UTF-8) et format décimal écrits dans le contrat ; converti en Parquet dès l'arrivée.2. Les caisses publient chaque vente dans Kafka, une par message. → Avro : message compact, typé, et le schéma peut gagner un champ optionnel sans casser les consommateurs existants.3. Les analystes calculent le chiffre d'affaires par magasin sur deux ans. → Parquet : la requête ne lit que les colonnes magasin et montant, compressées, au lieu de relire chaque ligne complète.Résultat attendu : un format par usage, et une conversion uniquevers Parquet à l'entrée du lac plutôt qu'à chaque lecture.À retenir
- Un CSV n'a pas de types : un code postal 01000 devient 1000 s'il est lu comme un nombre. Imposez les types à la lecture plutôt que de les laisser deviner.
- Pour de gros volumes de JSON, préférez JSON Lines (un objet par ligne) : on peut lire, découper et paralléliser le fichier sans le charger entier en mémoire.
- Avro et Parquet embarquent leur schéma : le fichier se décrit lui-même, ce qui évite de maintenir un dictionnaire de colonnes à part.
- Piège : les CSV produits en France utilisent souvent le point-virgule comme séparateur et la virgule comme décimale. Lu avec les réglages par défaut, 12,50 devient deux colonnes ou une chaîne.
Voir aussi
- ParquetParquet 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.
- Kafka : topics, partitions et offsetsKafka conserve des flux d'événements dans des journaux partitionnés que plusieurs applications lisent à leur rythme. On l'utilise pour diffuser des événements en continu entre systèmes.
- 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.