Question

En utilisant uniquement un mappeur (un script Python) et aucun réducteur, comment puis-je sortir un fichier séparé avec la clé comme nom de fichier, pour chaque ligne de sortie, plutôt que d'avoir de longs fichiers de sortie?

Était-ce utile?

La solution

Vous pouvez écrire dans un fichier texte sur le système de fichiers local à l'aide des fonctions de fichier python ou utiliser un API Thrift .

Autres conseils

Les classes inputform et outputformat peuvent être remplacées par l'utilisation des paramètres de ligne de commande -inputformat et -outputformat.

Vous trouverez un exemple de méthode dans le projet dumbo , qui est un python. cadre pour l'écriture des travaux en streaming. Il possède une fonctionnalité permettant d'écrire dans plusieurs fichiers et remplace en interne le format de sortie par une classe de son projet sœur, plumes - fm.last.feathers.output.MultipleTextFiles.

Le réducteur doit ensuite émettre un tuple en tant que clé, le premier composant du tuple étant le chemin d'accès au répertoire dans lequel les fichiers contenant les paires clé / valeur doivent être écrits. Il peut toujours y avoir plusieurs fichiers, cela dépend du nombre de réducteurs et de l'application.

Je recommande d'explorer dumbo. Il comporte de nombreuses fonctionnalités qui facilitent l'écriture de programmes Mapper / Réduire sur Hadoop en python.

Est-il possible de remplacer la outputFormatClass lors de l’utilisation de la diffusion en continu? Dans une implémentation Java native, vous étendez la classe MultipleTextOutputFormat et modifiez la méthode qui nomme le fichier de sortie. Définissez ensuite votre implémentation en tant que nouveau format de sortie avec la méthode setOutputFormat de JobConf

vous devriez vérifier, si cela est également possible en streaming. Je donno: - /

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top