我喜欢Hadoop流,因为它能够快速地从 map 减少工作中抽出又快又脏的一个。我也很喜欢Hroovy,它使我所有经过精心编码的Java都可以访问脚本语言。现在,我想将两个放在一起。我想带一个 jar 用我的一些Java类,并在基于groovy的映射器和化简器中利用它们。
是否有捷径可寻?似乎这可能会大大减少 map 缩减任务的开发时间,尤其是那些我将要运行几次的任务。
我想要做的是:
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
任何指针该怎么做?
最佳答案
如果需要将jar添加到groovy类路径中,可以将其放在每个Hadoop节点的〜/ .groovy / lib中。
或者,您可以将jars复制到每个节点中的某个目录,并使用groovy命令的-cp标志明确指定它们。
关于groovy - 使用Groovy在Hadoop流中包含jar文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3368421/