2010-07-30 61 views
0

我喜歡Hadoop流媒體,因爲它能夠快速地抽出快速和髒的地圖以減少地圖縮減作業。我也很喜歡Hroovy使我所有的編程語言都可以通過腳本語言進行編程。現在我想把這兩個放在一起。我想帶一些我的java類的jar,並在基於groovy的映射器和reducer中使用它們。使用Groovy在Hadoop流中包含jar文件

有沒有簡單的方法來做到這一點?看起來這可能是地圖縮小任務縮短開發時間的主要原因,特別是那些我只需要運行幾次的地圖。

想什麼,我是做這樣的事情:

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

你的命令行對我來說看起來不太合適。具體來說,你沒有正確匹配引號對。 – 2011-03-24 11:45:06

+0

是的,顯然這只是一個例子。 – downer 2011-03-24 19:43:56

回答

1

如果需要將jar添加到groovy類路徑中,可以將它們放入每個Hadoop節點的〜/ .groovy/lib中。

或者您可以將您的jar複製到每個節點中的某個目錄,並使用groovy命令的-cp標誌明確指定它們。

0

您可以使用-libjar屬性將jar添加到類路徑中。由於groovy運行在hadoop工作中,它應該能夠找到類。