2010-07-30 10 views
0

J'adore Hadoop streaming pour sa capacité à pomper rapidement et rapidement des tâches réduites. J'aime aussi Hroovy pour avoir rendu accessible à un langage de script tous les java soigneusement codés. Maintenant, je voudrais mettre les 2 ensemble. Je voudrais prendre un pot avec certaines de mes classes Java, et les utiliser dans des mappeurs et des réducteurs basés sur groovy.Y compris les fichiers jar dans le streaming Hadoop en utilisant Groovy

Y at-il un moyen facile de faire cela? Il semble que cela pourrait être une réduction importante du temps de développement pour les tâches de réduction de la carte, en particulier celles que je vais exécuter quelques fois.

ce que je voudrais est de faire quelque chose comme:

hadoop jar streaming.jar -mapper "groovy -ne 'import a.b.c.Foo; println Foo.doSomething(line)' -reducer "wc -l" -input input -output output -jarstoinclude ~/jarWithJava.jar 

tous les pointeurs comment faire cela?

+0

votre ligne de commande ne me semble pas bien formée. spécifiquement, vous ne correspondez pas correctement à des paires de guillemets. –

+0

ouais, évidemment ce n'était qu'un exemple. – downer

Répondre

1

Si vous avez besoin d'ajouter des jars à votre classpath groovy, vous pouvez les placer dans ~/.groovy/lib dans chacun de vos nœuds Hadoop.

Ou vous pouvez copier vos fichiers jar dans un répertoire de chacun des nœuds et les spécifier explicitement en utilisant l'option -cp pour la commande groovy.

0

Vous pouvez ajouter le fichier jar au chemin de classe en utilisant l'attribut -libjar. Depuis groovy fonctionne dans les travaux de confiture hadoop, il devrait être capable de trouver les classes.