Si vous ne l'avez pas déjà décidé, j'écrirais des schémas Avro pour vos données. Une fois que cela est fait, choisir entre les fichiers conteneurs Avro et les fichiers Parquet est à peu près aussi simple que d'échanger, par exemple,
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 termes de calcul du côté écriture - par exemple, il nécessite de la RAM pour la mise en mémoire tampon et du processeur pour commander les données, etc., mais il devrait réduire les coûts d'E / S, de stockage et de transfert ainsi que d'être efficace. lit en particulier avec des requêtes de type SQL (par exemple, Hive ou SparkSQL) qui ne concernent qu'une partie des colonnes.
Dans un projet, j'ai fini par revenir des conteneurs Parquet aux conteneurs Avro parce que le schéma était trop étendu et imbriqué (étant dérivé de classes orientées objet assez hiérarchiques) et aboutissait à des milliers de colonnes Parquet. À leur tour, nos groupes de lignes étaient vraiment larges et peu profonds, ce qui signifiait qu'il nous fallait 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 s'il est bien utilisé, il permet des améliorations significatives des performances.
Avro est un format basé sur les lignes. Si vous souhaitez récupérer les données dans leur ensemble, vous pouvez utiliser Avro
Parquet est un format basé sur des colonnes. Si vos données se composent de nombreuses colonnes mais que vous êtes intéressé par un sous-ensemble de colonnes, vous pouvez utiliser Parquet
HBase est utile lorsque la mise à jour fréquente des données est impliquée. Avro est rapide dans la récupération, Parquet est beaucoup plus rapide.
la source
Avro
Parquet
Du choix d'un format de stockage de données HDFS - Avro vs Parquet et plus
la source
Avro et Parquet sont tous deux des formats de stockage «auto-descriptifs», ce qui signifie qu'ils intègrent tous deux des données, des informations de métadonnées et un schéma lors du stockage de données dans un fichier. L'utilisation de l'un ou l'autre des formats de stockage dépend du cas d'utilisation. Trois aspects constituent la base sur laquelle vous pouvez choisir le format qui sera optimal dans votre cas:
Opération de lecture / écriture : Parquet est un format de fichier basé sur des colonnes. Il prend en charge l'indexation. Pour cette raison, il convient aux requêtes de données à faible latence et à écriture unique, complexes ou analytiques, complexes ou analytiques. Ceci est généralement utilisé par les utilisateurs finaux / les data scientists.
Pendant ce temps, Avro, étant un format de fichier basé sur des lignes, est mieux utilisé pour les opérations intensives 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, bien qu'ils le fassent de différentes manières.
Outils : Le parquet convient parfaitement à Impala. (Impala est un moteur de requête SQL RDBM Massive Parallel Processing (MPP) qui sait comment fonctionner sur des données résidant dans un ou plusieurs moteurs de stockage externes.) Là encore, Parquet se prête bien à des requêtes complexes / interactives et rapides (faible latence ) sort sur les données en HDFS. Ceci est pris en charge par CDH (Cloudera Distribution Hadoop). Hadoop prend en charge les formats ORC (Optimized Row Columnar) d'Apache (les sélections dépendent de la distribution Hadoop), alors qu'Avro est le mieux adapté au traitement Spark.
Evolution du schéma: faire évoluer un schéma de base de données signifie changer la structure de la base de données, donc ses données, et donc son traitement des requêtes.
Parquet et Avro prennent tous deux en charge l'évolution des schémas, mais à un degré variable.
Parquet est bon pour les opérations «d'ajout», par exemple l'ajout de colonnes, mais pas pour renommer les colonnes à moins que «read» ne soit fait par index.
Avro est mieux adapté pour ajouter, supprimer et généralement muter des colonnes que Parquet. Historiquement, Avro a fourni un ensemble plus riche de possibilités d'évolution de schéma que Parquet, et bien que leurs capacités d'évolution de schéma aient tendance à s'estomper, Avro brille toujours dans ce domaine, par rapport à Parquet.
la source
Votre compréhension est juste. En fait, nous avons rencontré une situation similaire lors de la migration des données dans notre DWH. Nous avons choisi Parquet plutôt qu'Avro car l'économie de disque que nous avons obtenue était presque le double de ce que nous avons obtenu avec AVro. En outre, 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 les colonnes, etc. Parquet était donc, de manière prévisible, un gagnant clair.
Nous utilisons Hive 0.12 de la distribution CDH. Vous avez mentionné que vous rencontrez des problèmes avec Hive + Parquet, quels sont-ils? Nous n'en avons rencontré aucun.
la source
Silver Blaze a joliment mis la description avec un exemple de cas d'utilisation et décrit comment Parquet était le meilleur choix pour lui. Il est logique de considérer l'un sur l'autre en fonction de vos besoins. Je mets en place 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 ça t'as aidé.
Il existe de nombreux formats de fichiers que vous pouvez utiliser dans Hive. Les mentions notables sont AVRO, Parquet. RCFile et 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 quelques liens utiles qui vous permettront de démarrer.
Ce billet de blog
Ce lien de MapR [Ils ne parlent pas de Parquet cependant]
Ce lien d'Inquidia
Les liens ci-dessus vous permettront de démarrer. J'espère que cette réponse à votre question.
Merci!
la source
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 prochainement sur Avro et une comparaison entre les 2 également. Le postera ici une fois terminé.
la source