9
votes

Générer des fichiers de sortie séparés dans le streaming Hadoop

Utiliser uniquement un mapper (un script Python) et aucun réducteur, comment puis-je émiter un fichier séparé avec la clé en tant que nom de fichier, pour chaque ligne de sortie, plutôt que d'avoir de longs fichiers de sortie?


0 commentaires

3 Réponses :


1
votes

est-il possible de remplacer la sortieFormatClass lors de l'utilisation de streaming? Dans une implémentation de Java natif, vous étendriez la classe MultipleTextOutputPormat et modifieriez la méthode qui nomme le fichier de sortie. Définissez ensuite votre implémentation comme nouvelle sortieFormat avec la méthode SetOutputformat de Jobconf

Vous devez vérifier, si cela est possible en streaming aussi. Je ne: - /


0 commentaires

1
votes

Vous pouvez écrire dans un fichier texte sur le système de fichiers local à l'aide des fonctions de fichier Python ou si vous souhaitez utiliser HDFS, utilisez le API THIFT .


2 commentaires

Comment plusieurs mappeurs écrivent-elles dans le même fichier simultanément traitées, lors de l'écriture sur le système de fichiers local ou sur les HDFS?


Faire c'est mauvais. Il est en conflit avec des tâches réessayeuses et vous garantit la nécessité de garder votre emploi.



7
votes

Les classes d'entrée et de sortieFormat peuvent être remplacées par l'utilisation des paramètres de commande -Inputformat et -OutputPormat.

Un exemple de comment faire cela peut être trouvé dans le Dumbo Project , qui est un python Cadre pour écrire des emplois en streaming. Il possède une fonctionnalité pour écrire à plusieurs fichiers, et en interne, il remplace le format de sortie avec une classe de son projet sœur, plumes < / a> - fm.last.feathers.output.multipletextFiles.

Le réducteur doit alors émettre un tuple comme clé, avec le premier composant de la tuple étant le chemin d'accès au répertoire où les fichiers avec les paires de clé / valeur doivent être écrits. Il pourrait toujours y avoir plusieurs fichiers, cela dépend du nombre de réducteurs et de l'application.

Je recommande de regarder dans Dumbo, il a de nombreuses fonctionnalités qui facilite l'écriture de la carte / réduisent des programmes sur Hadoop en Python.


0 commentaires