Différence entre l’ORC et le parquet

ORC et Parquet sont tous deux des formats de stockage de fichiers en colonnes open-source populaires dans l’écosystème Hadoop. Ils sont assez similaires en termes d’efficacité et de rapidité, et surtout, ils sont conçus pour accélérer les charges de travail d’analyse de données volumineuses (big data). Travailler avec des fichiers ORC est aussi simple que de travailler avec des fichiers Parquet, car ils offrent des capacités de lecture et d’écriture efficaces par rapport à leurs homologues basés sur des lignes. Ces deux types de fichiers ont leurs avantages et leurs inconvénients, et il est difficile de déterminer lequel est le meilleur par rapport à l’autre. Examinons de plus près chacun d’entre eux. Nous commencerons par l’ORC, puis nous passerons à Parquet.

ORC

ORC, abréviation de Optimized Row Columnar, est un format de stockage en colonnes libre et gratuit conçu pour les charges de travail Hadoop. Comme son nom l’indique, ORC est un format de fichier optimisé qui se décrit lui-même et qui stocke les données en colonnes, ce qui permet aux utilisateurs de lire et de décompresser uniquement les éléments dont ils ont besoin. Il succède au format traditionnel Record Columnar File (RCFile), conçu pour surmonter les limitations des autres formats de fichiers Hive. Il prend beaucoup moins de temps pour accéder aux données et réduit également la taille des données jusqu’à 75 %. L’ORC constitue un moyen plus efficace et plus performant de stocker les données auxquelles on accède par le biais de solutions SQL-on-Hadoop telles que Hive en utilisant Tez. ORC offre de nombreux avantages par rapport aux autres formats de fichiers Hive, tels qu’une forte compression des données, des performances plus rapides, une fonction prédictive « push down », et surtout, les données stockées sont organisées en bandes, ce qui permet des lectures importantes et efficaces à partir de HDFS.

Parquet

Parquet est un autre format de fichier orienté colonne open-source dans l’écosystème Hadoop, soutenu par Cloudera, en collaboration avec Twitter. Parquet est très populaire parmi les praticiens du big data car il offre une pléthore d’optimisations de stockage, en particulier pour les charges de travail analytiques. Comme ORC, Parquet fournit des compressions en colonnes, ce qui permet d’économiser beaucoup d’espace de stockage tout en permettant de lire des colonnes individuelles au lieu de lire des fichiers complets. Il offre des avantages significatifs en termes de performances et de besoins de stockage par rapport aux solutions de stockage traditionnelles. Il est plus efficace pour effectuer des opérations de type IO et il est très flexible lorsqu’il s’agit de prendre en charge une structure de données imbriquée complexe. En fait, il a été spécialement conçu en tenant compte des structures de données imbriquées. Parquet est également un meilleur format de fichier pour réduire les coûts de stockage et accélérer l’étape de lecture lorsqu’il s’agit de grands ensembles de données. Parquet fonctionne très bien avec Apache Spark. En fait, c’est le format de fichier par défaut pour l’écriture et la lecture de données dans Spark.

Différence entre ORC et Parquet

L’origine

– ORC s’inspire du format row columnar développé par Facebook pour prendre en charge les lectures en colonnes, le pushdown prédictif et les lectures paresseuses. Il succède au format traditionnel Record Columnar File (RCFile) et offre un moyen plus efficace de stocker les données relationnelles que le RCFile, en réduisant la taille des données jusqu’à 75 %. Parquet, quant à lui, s’inspire du format de stockage de données imbriquées décrit dans l’article de Google Dremel et développé par Cloudera, en collaboration avec Twitter. Parquet est désormais un projet incubateur d’Apache.

Support

– ORC et Parquet sont tous deux des formats populaires de fichiers big data orientés colonnes qui partagent une conception presque similaire en ce sens qu’ils partagent tous deux des données en colonnes. Alors que Parquet a un support beaucoup plus large pour la majorité des projets de l’écosystème Hadoop, ORC ne supporte que Hive et Pig. L’une des principales différences entre les deux est qu’ORC est mieux optimisé pour Hive, alors que Parquet fonctionne très bien avec Apache Spark. En fait, Parquet est le format de fichier par défaut pour l’écriture et la lecture de données dans Apache Spark.

Indexation

– Travailler avec des fichiers ORC est aussi simple que de travailler avec des fichiers Parquet. Les deux sont parfaits pour les charges de travail nécessitant une lecture intensive. Cependant, les fichiers ORC sont organisés en bandes de données, qui sont les éléments de base des données et sont indépendantes les unes des autres. Chaque bande comporte un index, des données de ligne et un pied de page. Le pied de page est l’endroit où les statistiques clés de chaque colonne d’une bande, telles que le nombre, le minimum, le maximum et la somme, sont mises en cache. Parquet, quant à lui, stocke les données dans des pages et chaque page contient des informations d’en-tête, des informations sur les niveaux de définition et les niveaux de répétition, ainsi que les données proprement dites.

Résumé

ORC et Parquet sont deux des formats de stockage de fichiers orientés colonnes les plus populaires dans l’écosystème Hadoop, conçus pour fonctionner correctement avec les charges de travail d’analyse de données. Parquet a été développé par Cloudera et Twitter pour résoudre les problèmes liés au stockage de grands ensembles de données avec un grand nombre de colonnes. ORC est le successeur de la spécification RCFile traditionnelle et les données stockées dans le format de fichier ORC sont organisées en bandes, qui sont hautement optimisées pour les opérations de lecture HDFS. Parquet, en revanche, est un meilleur choix en termes d’adaptabilité si vous utilisez plusieurs outils dans l’écosystème Hadoop. Parquet est mieux optimisé pour une utilisation avec Apache Spark, tandis qu’ORC est optimisé pour Hive. Mais pour l’essentiel, les deux sont assez similaires et il n’y a pas de différences significatives entre les deux.