Parquet
Parquet, qu'est-ce que c'est ?
Apache Parquet est un format de fichier de données open source en colonnes, conçu pour stocker et récupérer des données avec une grande efficacité. Il fournit d'excellents schémas de compression et d'encodage des données. Ses performances supérieures lui permettent de traiter des données complexes en vrac. Apache Parquet a pour but d'être un format d'échange commun pour les charges de travail tant interactives que par batch. Il s'apparente à d'autres formats de fichiers de stockage en colonnes disponibles dans Hadoop, comme RCFile et ORC.
Les caractéristiques de Parquet
- Un format libre et open source.
- Indépendant du langage.
- Format en colonnes : les fichiers sont organisés par colonne plutôt que par ligne, ce qui économise de l'espace et accélère l'exécution des requêtes d'analytique.
- Utilisé dans les cas d'usage de l'analytique (OLAP), généralement en conjonction avec des bases de données OLTP traditionnelles.
- Compression et décompression des données hautement efficaces
- Compatible avec les types de données complexes et les structures de données imbriquées.
Les avantages de Parquet
- Idéal pour stocker tout type de big data (tableaux de données structurés, images, vidéos, documents).
- Permet d'économiser de l'espace de stockage cloud grâce à une compression par colonne d'une grande efficacité et à des schémas d'encodage flexibles pour les colonnes contenant différents types de données.
- Amélioration du débit et des performances grâce à des techniques comme le saut de données : les requêtes qui atteignent des valeurs de colonne spécifiques n'ont pas besoin de lire l'intégralité de la ligne de données.
Apache Parquet est implémenté à l'aide de l'algorithme de découpage et d'assemblage (« record-shredding and assembly »), compatible avec les structures de données complexes qui peuvent être utilisées pour stocker les données. Optimisé pour les données complexes en vrac, Parquet propose différentes méthodes efficaces de compression des données et plusieurs types d'encodage. Cette approche est particulièrement adaptée aux requêtes qui doivent lire certaines colonnes dans une grande table. Parquet peut se contenter de lire uniquement les colonnes nécessaires, ce qui réduit considérablement les E/S.
Les avantages du format colonnaire pour le stockage des données :
- Le stockage en colonne, qui est l'approche d'Apache Parquet, a pour but de gagner en efficacité par rapport aux fichiers en ligne comme CSV. Lors d'une requête, le stockage en colonne permet d'ignorer les données non pertinentes très rapidement. Résultat : les requêtes d'agrégation prennent beaucoup moins de temps qu'avec des bases de données orientées lignes. Cette méthode de stockage se traduit par des économies de matériel et une réduction de la latence lors de l'accès aux données.
- Apache Parquet est construit à partir de zéro. Il est donc capable de prendre en charge des structures de données imbriquées sophistiquées. L'agencement des fichiers de données Parquet est optimisé pour les requêtes qui traitent de grands volumes données – de l'ordre du gigaoctet pour chaque fichier.
- Parquet propose des options de compression flexibles et des schémas d'encodage efficaces. Comme le type de données contenu dans chaque colonne est uniforme, la compression de chaque colonne se fait très simplement (autre facteur qui accélère les requêtes). Différents codecs sont disponibles pour la compression des données ; il est donc possible de compresser différemment des fichiers de données distincts.
- C'est avec les technologies interactives et serverless qu'Apache Parquet fonctionne le mieux. On pense à AWS Athena, Amazon Redshift Spectrum, Google BigQuery et Google Dataproc.
En quoi Parquet se distingue de CSV
Format simple et courant, CSV est utilisé par de nombreux outils comme Excel, Google Sheets et bien d'autres. Si CSV est le format utilisé par défaut par les pipelines de traitement des données, il présente certains inconvénients :
- Amazon Athena et Spectrum facturent en fonction de la quantité de données scannées par requête.
- Google et Amazon facturent en fonction de la quantité de données stockées dans GS ou S3.
- Google Dataproc facture au temps.
Parquet permet à ses utilisateurs de réduire leurs besoins en stockage d'au moins un tiers sur les grands datasets. Surtout, il améliore considérablement les temps de balayage et de désérialisation, diminuant les coûts globaux d'autant. Le tableau suivant compare les économies réalisées et les gains de temps obtenus en convertissant en Parquet les données stockées en CSV.
Jeu de données |
Taille sur Amazon S3 |
Durée d'exécution de la requête |
Données scannées |
Coût |
Données stockées dans des fichiers CSV |
1 To |
236 secondes |
1,15 To |
5,75 $ |
Données stockées au format Apache Parquet |
130 Go |
6,78 secondes |
2,51 Go |
0,01 $ |
Économies |
-87 % en utilisant Parquet |
34 x plus rapide |
-99 % de données scannées |
99,7 % d'économies |
Parquet et Delta Lake
Le projet open source Delta Lake s'appuie sur le format Parquet et lui ajoute des fonctionnalités supplémentaires comme les transactions ACID sur le stockage des objets cloud, le time travel, l'évolution des schémas et des commandes DML simples (CREATE/UPDATE/INSERT/DELETE/MERGE). Delta Lake implémente une grande part de ces fonctionnalités essentielles à l'aide d'un journal de transactions ordonnées qui permet de bénéficier d'une capacité d'entreposage des données sur le stockage des objets cloud. Pour en savoir plus, lisez l'article du blog Databricks Immersion dans Delta Lake : à la découverte du journal de transactions.