2009-05-20 28 views
6

Existe-t-il un moyen de contrôler les noms de fichier de sortie d'un travail Hadoop Streaming? Spécifiquement, je voudrais que le contenu et le nom des fichiers de sortie de mon travail soient organisés par le ket les sorties du réducteur - chaque fichier ne contiendrait que des valeurs pour une clé et son nom serait la clé.Comment contrôler le nom et le contenu des fichiers de sortie d'un travail de diffusion Hadoop?

Mise à jour: Vous venez de trouver la réponse - L'utilisation d'une classe Java dérivée de MultipleOutputFormat comme format de sortie des jobs permet de contrôler les noms des fichiers de sortie. http://hadoop.apache.org/core/docs/current/api/org/apache/hadoop/mapred/lib/MultipleOutputFormat.html

Je n'ai pas vu des échantillons pour ce là-bas ... Quelqu'un peut-il indiquer à un échantillon en continu Hadoop qui utilise un format de sortie personnalisé classe Java?

Répondre

8

L'utilisation d'une classe Java dérivée de MultipleOutputFormat comme format de sortie des jobs permet de contrôler les noms des fichiers de sortie. http://hadoop.apache.org/core/docs/current/api/org/apache/hadoop/mapred/lib/MultipleOutputFormat.html

Lorsque vous utilisez Hadoop Streaming, car un seul JAR est pris en charge que vous avez réellement à la fourchette le pot de streaming et de mettre vos nouvelles classes de format de sortie pour l'emploi en continu de pouvoir référencer ...

EDIT: de la version 0.20.2 de Hadoop cette classe a été désapprouvée et vous devez maintenant utiliser: http://hadoop.apache.org/docs/mapreduce/current/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html

+1

Lien brisé vers de nouveaux documents –

-1

En général, Hadoop considère que le répertoire entier est la sortie et non un fichier individuel. Il n'y a aucun moyen de contrôler directement le nom de fichier, que ce soit en utilisant Streaming ou des travaux Java réguliers. Cependant, rien ne vous empêche de faire cette division et de vous renommer, une fois le travail terminé. Vous pouvez $ HADOOP dfs -cat chemin/vers/votre/sortie/répertoire/part- *, et rediriger vers un de vos scripts qui divise le contenu par des clés et l'écrit dans de nouveaux fichiers.

+0

En général des thats pas d'approche que vous voulez prendre. –