comment fusionner plusieurs parquet fichiers à un seul parquet fichier à l'aide de linux ou de hdfs commande?
J'ai plusieurs petites parquet
les fichiers générés en sortie de la ruche ql travail, je voudrais fusionner les fichiers de sortie pour seul parquet fichier?
quelle est la meilleure façon de le faire à l'aide de certaines hdfs or linux commands
?
nous avons utilisé pour fusionner les fichiers texte à l'aide cat
commande, mais ce travail de parquet ainsi?
Peut-on faire à l'aide de HiveQL
lui-même lors de l'écriture des fichiers de sortie, comme la façon dont nous le faisons à l'aide de repartition
ou coalesc
méthode dans spark
?
- À l'aide de "parquet-les outils de fusion" n'est pas recommandée. Parquet baisses de fichier dans row_groups qui correspondent à HDFS blocs. "Le Parquet outils de fusion" seuls endroits row_groups après row_groups sans la fusion. Finalement, vous avez le même problème. Vous pouvez trouver plus d'explication dans ce billet. Vous avez également plus d'explication sur "row_groups" pour le parquet dans ce blog.
- Suivant le billet mentionné par @Nastasia, ce problème ne sera pas résolu (du moins pour l'instant). De toute façon, la solution fournie par la fusion-outils est maintenant à émettre un avertissement (github.com/apache/parquet-mr/pull/433).
Vous devez vous connecter pour publier un commentaire.
Selon cette https://issues.apache.org/jira/browse/PARQUET-460
Maintenant, vous pouvez télécharger le code source et le compiler parquet-outils qui est intégré dans la commande de fusion.
Ou à l'aide d'un outil comme https://github.com/stripe/herringbone
Vous pouvez aussi le faire en utilisant
HiveQL
lui-même, si l'exécution de votre moteur estmapreduce
.Vous pouvez définir un indicateur de votre requête, ce qui provoque la ruche à la fusion de petits fichiers à la fin de votre travail:
ou
si votre travail est une carte seule tâche.
Ce sera la cause de la ruche travail de fusionner automatiquement les nombreuses petites parquet fichiers en moins de gros fichiers. Vous pouvez contrôler le nombre de fichiers de sortie en ajustant
hive.merge.size.per.task
réglage. Si vous voulez avoir juste un fichier, assurez-vous de définir une valeur qui est toujours plus grand que la taille de votre sortie. Aussi, assurez-vous de réglerhive.merge.smallfiles.avgsize
en conséquence. Le régler à une valeur très faible si vous souhaitez assurez-vous que la ruche toujours fusionne des fichiers. Vous pouvez en savoir plus sur les paramètres, dans la ruche la documentation.