2017-07-12 12 views
1

J'utilise Apache Parquet sur Hadoop et après un moment, j'ai une préoccupation. Quand je crée des parquets dans Spark sur Hadoop, ça peut être assez compliqué. Quand je dis désordonné, je veux dire que le travail Spark génère une grande quantité de fichiers parquet. Quand j'essaie de les interroger, je suis confronté à une requête de grande taille parce que Spark fusionne tous les fichiers ensemble.Comment faire face à un grand nombre de fichiers parquet

Pouvez-vous me montrer la bonne façon d'y faire face, ou peut-être que je ne les utilise pas correctement? L'avez-vous déjà traité et comment l'avez-vous résolu?

MISE À JOUR 1: Y a-t-il un "travail de côté" pour fusionner ces fichiers dans un seul parquet? Quelle taille de fichiers parquet est préférable d'utiliser, certaines limites haut et bas?

+0

Si ces fichiers sont vides ou si la taille est petite <15mb, vous devez en effet répartir les données mais dans tous les cas, nous ne pouvons pas vous donner une réponse exacte avec les informations fournies. S'il vous plaît lire sur la façon de poser des questions sur SO https://stackoverflow.com/help/how-to-ask! – eliasah

+0

Il existe également un utilitaire shell appelé 'parquet-tools' que vous pouvez utiliser, mais le repartitionnement devrait le faire pour vous. – philantrovert

Répondre

2

Jetez un oeil à this GitHub repo et this réponse. En bref, gardez la taille des fichiers plus grande que la taille du bloc HDFS (128 Mo, 256 Mo).

+0

Est-il possible de faire ce gros fichier de parquet en streaming (toutes les 2 secondes) où, chaque 2sec je reçois environ 1000 lignes. Ne pas avoir une vision pompe le fichier de parquet et ensuite le stocker sur Hadoop. Aprox. comme j'ai l'expérience 12MB parquet file (snappy) a environ 20M rangées en elle. Vous avez d'autres liens à partager qui peuvent m'aider, je serais reconnaissant :) Peu importe, je viens de lire à propos de ce repo GitHub :) –

+0

Il suffit de lancer un autre travail qui permettra de compacter les fichiers avec les moyens de l'outil mentionné ou simplement l'implémenter vous-même avec 'coalesce'. – gorros

+0

Vous avez fait ma journée :) –

1

Une bonne façon de réduire le nombre de fichiers de sortie est d'utiliser coalesce ou repartition.