我喜欢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
任何指针如何做到这一点?
答案 0 :(得分:1)
如果需要将jar添加到groovy类路径中,可以将它们放在每个Hadoop节点的〜/ .groovy / lib中。
或者您可以将jar复制到每个节点中的某个目录,并使用groovy命令的-cp标志显式指定它们。
答案 1 :(得分:0)
您可以使用-libjar
属性将jar添加到类路径中。由于groovy在hadoop作业中运行堵塞,它应该能够找到类。