Je compte utiliser l’un des formats de fichiers hadoop pour mon projet lié à hadoop. Je comprends que le parquet est efficace pour les requêtes basées sur les colonnes et les avro pour une parsing complète ou lorsque nous avons besoin de toutes les données des colonnes!
Avant de procéder et de choisir l’un des formats de fichier, je veux comprendre quels sont les inconvénients / inconvénients de l’un par rapport à l’autre. Quelqu’un peut-il me l’expliquer en termes simples?
Si vous ne l’avez pas déjà décidé, je vais aller de l’avant et écrire des schémas Avro pour vos données. Une fois cela fait, choisir entre les fichiers de conteneur Avro et les fichiers Parquet est à peu près aussi simple que
job.setOutputFormatClass(AvroKeyOutputFormat.class); AvroJob.setOutputKeySchema(MyAvroType.getClassSchema());
pour
job.setOutputFormatClass(AvroParquetOutputFormat.class); AvroParquetOutputFormat.setSchema(job, MyAvroType.getClassSchema());
Le format Parquet semble être un peu plus intensif en calcul du côté de l’écriture – par exemple, nécessitant de la RAM pour la mise en mémoire tampon et le processeur pour la commande des données, etc., il devrait réduire les coûts d’E / S, de stockage et de transfert lit en particulier avec des requêtes de type SQL (par exemple, Hive ou SparkSQL) qui ne traitent qu’une partie des colonnes.
Dans un projet, j’ai fini par revenir des conteneurs Parquet à Avro car le schéma était trop étendu et nested (étant dérivé de classes orientées object assez hiérarchiques) et donnait des milliers de colonnes Parquet. En retour, nos groupes de lignes étaient très larges et peu profonds, ce qui signifiait que cela prenait une éternité avant de pouvoir traiter un petit nombre de lignes dans la dernière colonne de chaque groupe.
Je n’ai pas encore eu beaucoup de chance d’utiliser Parquet pour des données plus normalisées / saines, mais je comprends que si elles sont bien utilisées, cela permet des améliorations de performances significatives.
Avro est un format basé sur les lignes. Si vous souhaitez récupérer les données dans leur ensemble, vous pouvez utiliser Avro
Le parquet est un format basé sur des colonnes. Si vos données contiennent beaucoup de colonnes mais que vous êtes intéressé par un sous-ensemble de colonnes, vous pouvez utiliser Parquet
HBase est utile lorsque des mises à jour fréquentes des données sont impliquées. Avro est rapide dans la récupération, le parquet est beaucoup plus rapide.
Avro
Parquet
De choisir un format de stockage de données HDFS – Avro vs Parquet et plus
Votre compréhension est juste. En fait, nous avons rencontré une situation similaire lors de la migration de données dans notre DWH. Nous avons choisi Parquet over Avro car l’économie de disque que nous avons eue était presque le double de ce que nous avions obtenu avec AVro. De plus, le temps de traitement des requêtes était bien meilleur que celui d’Avro. Mais oui, nos requêtes étaient basées sur l’agrégation, les opérations basées sur des colonnes, etc. Par conséquent, Parquet était clairement un gagnant évident. Nous utilisons HIve 0.12 de la dissortingbution CDH. Vous avez mentionné que vous rencontrez des problèmes avec Hive + Parquet, quels sont-ils? Nous n’en avons pas rencontré. J’espère que cela t’aides.
Silver Blaze a bien décrit la description avec un exemple d’utilisation et a décrit comment Parquet était le meilleur choix pour lui. Il est judicieux d’envisager l’une sur l’autre en fonction de vos besoins. Je présente une brève description de différents autres formats de fichiers, ainsi qu’une comparaison de la complexité de l’espace-temps. J’espère que cela pourra aider.
Il existe un grand nombre de formats de fichiers que vous pouvez utiliser dans Hive. Les mentions notables sont AVRO, Parquet. RCFile & ORC. Il existe de bons documents disponibles en ligne auxquels vous pouvez vous référer si vous souhaitez comparer les performances et l’utilisation de l’espace de ces formats de fichiers. Suit des liens utiles qui vous feront avancer.
Cet article de blog
Ce lien de MapR [Ils ne discutent pas du parquet cependant]
Ce lien de Inquidia
Les liens ci-dessus vous permettront de démarrer. J’espère que cela répond à votre requête.
Merci!
L’utilisation des deux formats dépend du cas d’utilisation. Sur la base de 3 facteurs, nous pouvons choisir le format qui sera opté dans notre cas:
Opération de lecture / écriture : Le parquet est un format de fichier basé sur des colonnes, donc compatible avec l’indexation, ce qui le rend adapté aux requêtes de lecture intensive, complexes ou analytiques et aux données à faible latence. Ceci est généralement utilisé par les utilisateurs finaux / les scientifiques des données. Considérant que, AVRO, étant un format de fichier basé sur les lignes, est le mieux adapté pour une exploitation intensive en écriture. Ceci est généralement utilisé par les ingénieurs de données. Les deux prennent en charge les formats de sérialisation et de compression.
Outils : Parquet est le mieux adapté à Impala (moteur MPP) car il est responsable des requêtes complexes / interactives et des sorties à faible latence. Ceci est soutenu par le CDH. Comme ce HDP prend en charge les formats ORC (les sélections dépendent également de la dissortingbution de hadoop). Considérant que, Avro est le mieux adapté pour le traitement Spark.
Evolution du schéma : modifie le schéma des données sur la transformation et le traitement. Parquet et Avro supportent tous deux l’évolution des schémas, mais à un certain degré. En comparaison, Avro fournit une évolution de schéma beaucoup plus riche. Le parquet est une bonne opération lorsque nous ajoutons des opérations comme l’ajout de colonnes, mais Avro convient aux opérations d’ajout et de modification. Ici, Avro brille mieux que Parquet.
Juste pour une description sur Parquet, vous pouvez vous référer ici: http://bigdata.devcodenote.com/2015/04/parquet-file-format.html
J’ai l’intention d’écrire très bientôt sur Avro et une comparaison entre les deux également. Je vais le poster ici une fois terminé.