Question

J'utilise Python et doivent travailler sur le scénario suivant à l'aide Hadoop en streaming: a) Map1-> Reduce1-> Map2-> Reduce2 b) Je ne veux stocker les fichiers intermédiaires c) Je ne veux pas installer des paquets comme Cascading, Yelp, oozie. Je les ai gardé comme dernière option.

Je suis déjà allé dans le même genre de discussion sur le SO et ailleurs, mais n'a pas pu trouver une réponse Python WRT. Pouvez-vous s'il vous plaît suggérer.

Était-ce utile?

La solution

b) Je ne veux pas de stocker des fichiers intermédiaires

c) Je ne veux pas installer des paquets comme Cascading, Yelp, oozie.

Quel est le motif pourquoi? Sur la base de la réponse, une meilleure solution pourrait être fournie.

Les fichiers Intermediates ne peut être évité, car le o / p de l'emploi précédent Hadoop ne peut pas être diffusé en continu comme i / p à la tâche suivante. Créez un script comme celui-ci

Exécuter le streaming job1
si job1 est pas le succès puis quittez
exécuter le streaming job2
si job2 est le succès de les supprimer o / p de job1 sortie autre
exécuter le streaming job3
si job3 est succcess les supprimer o / p de job2 sortie autre

Autres conseils

Pourquoi ne pas utiliser des cadres MapReduce pour python de streaming, comme Dumbo https://github.com / klbostee / Dumbo / wiki / court tutoriel , ou MRJob http://packages.python.org / mrjob /

Par exemple, avec Dumbo, votre pipe serait:

job.add_iter(Mapper1, Reducer1)
job.add_iter(Mapper2, Reducer2)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top