使用Groovy在Hadoop流中包含jar文件

时间:2010-07-30 02:48:17

标签: groovy streaming hadoop

我喜欢Hadoop流媒体,因为它可以快速抽出快速而肮脏的地图减少工作。我也喜欢Hroovy,因为我可以使用脚本语言访问所有经过精心编码的java。现在我想把2放在一起。我想带一些我的java类的jar,并在基于groovy的映射器和reducer中使用它们。

有一种简单的方法吗?看起来这可能是地图缩减任务的开发时间的一个重大减少,特别是那些我将要运行几次。

我想要做的事情是:

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

任何指针如何做到这一点?

2 个答案:

答案 0 :(得分:1)

如果需要将jar添加到groovy类路径中,可以将它们放在每个Hadoop节点的〜/ .groovy / lib中。

或者您可以将jar复制到每个节点中的某个目录,并使用groovy命令的-cp标志显式指定它们。

答案 1 :(得分:0)

您可以使用-libjar属性将jar添加到类路径中。由于groovy在hadoop作业中运行堵塞,它应该能够找到类。