2011-07-16 3 views
0

J'utilise un pipeline mapreduce élastique qui utilise la sortie de plusieurs scripts cochons. Essentiellement, la sortie d'un script cochon est stockée à un certain endroit sur S3, et puisque la taille des données est énorme, les fichiers de sortie créés sont nommés comme partie-xxxxx. Maintenant, mon problème est que l'une des étapes de mon pipeline est de copier le contenu à partir de deux endroits différents et de les assembler, puis de faire le traitement sur toute cette collection. Maintenant que les fichiers des deux emplacements portent le même nom (partie 00000 à partie 00342), mes fichiers sont remplacés pendant le processus de copie. Par défaut, cochon génère mes fichiers de sortie à un emplacement donné avec un tel format pour le nom de fichier. Au départ, j'avais l'habitude de télécharger les fichiers de sortie de cochon sur mon disque, d'écrire un programme python pour les renommer et de les télécharger sur S3. Je ne peux pas le faire maintenant en raison de la quantité de données.Pig: modification du format du fichier de sortie NAME

Je ne possède pas les étapes de pipeline qui font réellement cette copie. Tout ce que j'ai le contrôle (peut-être), c'est le nom des fichiers copiés). J'ai donc besoin de savoir s'il y a un moyen pour moi d'attacher un préfixe aux noms des fichiers de pièces créés par pig.

Merci

Répondre

0

Je ne suis pas sûr que vous pouvez changer le préfixe chez le porc.

Même si vous avez dit que vous n'avez pas le contrôle dessus, je pense vraiment qu'il serait préférable de faire le processus en aval deux répertoires d'entrée. il semble vraiment inefficace d'avoir à copier les deux répertoires en un seul pour la prochaine étape.

si vous avez vraiment besoin de le renommer en utilisant hadoop en utilisant un travail de streaming où la commande de streaming est un 'hadoop fs -cp'. laissez-moi savoir si vous ne l'avez pas vu cette approche et je peux l'écrire comme un billet de blog, ont été à sens ... de toute façon

tapis

0

Vous pouvez changer un peu en utilisant:

set mapreduce.output.basename 'MyDesiredPrefixName-'; /* This changes the part-r-0000 to a customized name */ 
Questions connexes