Apache Parquet est un format de stockage en colonnes open source utilisé pour stocker, gérer et analyser efficacement de grands jeux de données. Contrairement aux formats de stockage en lignes tels que CSV ou JSON, Parquet organise les données en colonnes afin d’améliorer la performance des requêtes et de réduire les coûts de stockage.
Les organisations utilisent différents formats de fichiers pour répondre à différents besoins en matière de données. De nombreux formats traditionnels organisent les données en lignes, optimisant ainsi la simplicité des transferts de données et leur lisibilité.
Parquet adopte une approche fondamentalement différente. Il regroupe les types de données similaires dans des colonnes. Cette structure en colonnes a transformé la façon dont les organisations gèrent l’analytique à grande échelle, en permettant une compression supérieure et un accès ciblé aux données.
Par exemple, lors de l’analyse des transactions client, une base de données de vente au détail basée sur Parquet peut accéder à des colonnes spécifiques telles que les dates et les montants d’achat sans charger les enregistrements client complets. La possibilité d’accéder à des colonnes spécifiques peut réduire à la fois le temps de traitement et les coûts de stockage.
Le format Parquet trouve sa plus grande utilité dans trois domaines clés :
Une autre raison qui justifie l’adoption généralisée de Parquet, c’est sa compatibilité avec les systèmes distribués et les outils de données, comme Apache Spark, Apache Hive et Apache Hadoop.
À la différence d’autres formats de fichiers, Parquet transforme le stockage des données et l’accès à ces dernières grâce à trois capacités principales :
Apache Parquet transforme systématiquement les données brutes dans un format en colonnes optimisé, améliorant ainsi de manière significative l’efficacité du stockage et la performance des requêtes.
Voici comment Parquet traite les données :
Lorsque vous écrivez des données dans un fichier Parquet, elles sont d’abord divisées en groupes de lignes. Chaque groupe de lignes représente une unité indépendante du jeu de données, ce qui permet un traitement parallèle et une gestion efficace de la mémoire pour les opérations à grande échelle. Cette stratégie de partitionnement constitue la base de l’accès aux données haute performance qui caractérise Parquet.
Dans chaque groupe de lignes, l’algorithme d’assemblage de Parquet réorganise les données par colonne et non par ligne. Les types de données similaires sont regroupés en blocs de colonnes, ce qui permet un encodage spécialisé basé sur les caractéristiques des données. Par exemple, une colonne de dates peut être optimisée différemment d’une colonne de valeurs numériques.
Parquet applique un processus d’optimisation en deux étapes. Tout d’abord, il utilise des schémas d’encodage tels que le codage par longueur de séquence (RLE) pour représenter efficacement les valeurs répétées, en particulier pour les colonnes comportant de nombreuses entrées en double. Il applique ensuite des algorithmes de compression tels que Snappy ou Gzip pour réduire davantage les besoins en stockage.
Le format crée des métadonnées complètes, notamment le schéma de fichier et les types de données, les statistiques de chaque colonne, les emplacements des groupes de lignes et la structure. Ces métadonnées permettent une planification et une optimisation efficaces des requêtes.
Lors de la lecture des données Parquet, les moteurs de requête consultent d’abord les métadonnées pour identifier les colonnes pertinentes. Seuls les blocs de colonnes nécessaires sont lus à partir du stockage et les données sont décompressées et décodées selon les besoins.
Apache Parquet peut offrir des avantages significatifs aux organisations qui gèrent des opérations de données à grande échelle.
Voici quelques-uns de ces avantages :
La structure des données de Parquet peut accélérer l’exécution des requêtes analytiques. Lorsque des applications ont besoin de données spécifiques, elles accèdent uniquement aux colonnes pertinentes, ce qui réduit le temps de traitement des requêtes de plusieurs heures à quelques minutes. Cet accès ciblé fait de Parquet un outil très utile pour les organisations qui exécutent des analyses complexes à grande échelle.
Contrairement aux formats plus simples, Parquet peut gérer efficacement les structures de données et les tableaux imbriqués que l’on retrouve souvent dans les applications modernes. Cette capacité est très utile pour les organisations qui traitent des types de données complexes, tels que les structures de type JSON dans l’analytique web ou les tableaux imbriqués dans les données de capteurs des appareils IdO (Internet des objets).
Le format en colonnes de Parquet change fondamentalement les méthodes de stockage et de compression des données. En regroupant les types de données similaires, Parquet peut appliquer des algorithmes d’encodage différents à chaque type de données, obtenant ainsi de meilleurs taux de compression que les formats tels que CSV ou JSON.
Par exemple, un jeu de données contenant des millions de transactions client pourrait nécessiter des téraoctets de stockage au format CSV, mais seulement une fraction de cet espace serait nécessaire s’il était stocké dans des fichiers Parquet.
Les architectures de données modernes nécessitent souvent une intégration fluide des outils, que Parquet permet grâce à une prise en charge native des principaux cadres. Que les équipes utilisent Python avec la bibliothèque pandas pour l’analyse, Java pour le développement d’applications ou Apache Spark pour le traitement des données, Parquet peut garantir un accès aux données cohérent dans toute l’entreprise.
L’intégration native de Parquet à Hadoop le rend particulièrement efficace pour le traitement du big data. Parquet ayant été conçu pour le système de fichiers distribué Hadoop (HDFS), il est généralement plus performant que les formats de fichiers traditionnels dans les environnements Hadoop. Lorsqu’elles utilisent Parquet avec Hadoop, les organisations peuvent exécuter des requêtes plus rapidement et stocker leurs données plus efficacement, souvent dans une fraction de l’espace de stockage dont elles avaient besoin auparavant.
Apache Parquet peut répondre à un large éventail de besoins en ingénierie des données dans de nombreux secteurs et applications.
Voici quelques-unes de ses implémentations les plus significatives :
Les organisations qui créent des data lakes et des entrepôts de données choisissent souvent Parquet comme format de stockage principal. Ses performances en matière de compression et de requêtes le rendent idéal pour stocker de grands volumes de données tout en garantissant un accès rapide aux outils de business intelligence et aux requêtes SQL (langage de requête structuré).
Par exemple, une chaîne de distribution qui utilise Parquet pour stocker ses données de transaction peut analyser les tendances de vente dans des milliers de magasins tout en utilisant moins d’espace de stockage qu’avec les formats traditionnels.
Les data scientists et les analystes qui travaillent avec des cadres tels qu’Apache Spark ou la bibliothèque pandas de Python peuvent tirer parti des performances optimisées de Parquet pour les requêtes analytiques. Bien que des formats comme Avro excellent généralement dans le traitement des données au niveau des enregistrements, beaucoup trouvent le format de fichier Parquet particulièrement efficace pour les analyses complexes.
Une société de services financiers pourrait par exemple utiliser Parquet pour stocker des données de marché, permettant aux analystes de traiter des millions d’événements de trading et de calculer les indicateurs de risque en temps quasi réel.
Les pipelines de données modernes utilisent fréquemment Parquet comme format intermédiaire ou format cible dans les processus ETL (extraction, transformation et chargement). Sa compatibilité avec des cadres populaires comme Apache Spark et sa prise en charge de l’évolution des schémas en font un outil idéal pour les workflows d’ingénierie des données devant gérer l’évolution des structures de données.
Par exemple, les établissements de santé peuvent utiliser Parquet pour transformer efficacement les dossiers des patients provenant de plusieurs systèmes dans un format unifié, avec des capacités d’évolution des schémas gérant automatiquement les nouveaux champs de données sans perturber les processus existants.
Voici une comparaison du format de fichier Parquet avec les autres formats de stockage courants :
Les formats traditionnels tels que CSV et JSON stockent les données en lignes : une solution idéale pour des transferts de données simples, lisibles par l’humain. Cependant, dans le contexte d’une analytique à grande échelle, la lecture des fichiers Parquet offre des avantages significatifs.
Alors que le format CSV implique l’analyse de lignes entières même en cas de requête sur des colonnes uniques, le stockage en colonnes de Parquet permet un accès direct à des éléments de données spécifiques. Par exemple, l’analyse d’une seule colonne dans un jeu de données de l’ordre du pétaoctet nécessiterait la lecture de l’ensemble du fichier CSV, tandis que Parquet accéderait seulement aux blocs de colonnes pertinents.
Avro et Parquet s’appliquent à différents cas d’utilisation dans l’écosystème de données. Le format en lignes d’Avro excelle dans les scénarios de sérialisation et de streaming, ce qui en fait un outil idéal pour enregistrer des transactions ou des événements individuels.
Le format de fichier Parquet, en revanche, est optimisé pour les workloads analytiques qui impliquent l’analyse de colonnes spécifiques sur des millions d’enregistrements.
Par exemple, une plateforme d’e-commerce pourrait utiliser Avro pour capturer les événements de commande en temps réel, mais convertir ces données au format Parquet à des fins d’analyse et de stockage à long terme.
La force d’Apache Parquet ne réside pas seulement dans les caractéristiques de son format, mais aussi dans son solide écosystème de cadres et d’outils connexes.
Parmi les technologies les plus significatives de l’écosystème Parquet, citons :
Parquet s’intègre de façon fluide aux principaux cadres de traitement de données. Apache Spark offre des capacités d’analytique haute performance, tandis qu’Hadoop permet un traitement distribué sur de grands clusters.
Apache Arrow vient améliorer cet écosystème par un partage rapide et efficace des données entre les systèmes et un accès direct aux données : des fonctionnalités qui améliorent les performances lors de l’utilisation de cadres comme Spark et Hadoop.
Les organisations peuvent combiner ces cadres avec Parquet pour créer des pipelines de données efficaces, de l’ordre du gigaoctet ou du pétaoctet.
Les ingénieurs de données peuvent utiliser Parquet sur plusieurs interfaces de programmation. Les développeurs Python utilisent généralement la bibliothèque pandas pour la manipulation des données, tandis que les applications Java utilisent les bibliothèques Parquet natives.
Les principaux fournisseurs de cloud, notamment Amazon Web Services, Google Cloud Platform, Microsoft Azure et IBM Cloud, proposent une prise en charge native de Parquet.
Parquet est également compatible avec les entrepôts de données et les moteurs de requête basés sur le cloud tels qu’Amazon Athena, Google BigQuery et IBM Db2 Warehouse.
IBM Storage DS8000 est le système de stockage le plus fiable et le mieux sécurisé pour les serveurs IBM zSystems et IBM Power.
IBM Storage est une famille de matériel de stockage de données, de stockage défini par logiciel et de logiciels de gestion du stockage.
IBM fournit un support proactif pour les serveurs Web et l’infrastructure des centres de données afin de réduire les temps d’arrêt et d’améliorer la disponibilité informatique.