2012-11-18 104 views
0

我是hadoop和豬的新手。我想知道如何運行一個內部調用UDF方法的豬腳本?事情是我沒有看到像豬UDF手冊上提及的聲明「註冊blah.jar」:用hadoop上的udf運行豬腳本

register myudfs.jar; 
A = load 'student_data' as (name: chararray, age: int, gpa: float); 
B = foreach A generate flatten(myudfs.Swap(name, age)), gpa; 
C = foreach B generate $2; 
D = limit B 20; 
dump D; 

但我確實看到一個包含「blah.jar」一個「罐子」目錄。我的同事已經離開了,所以我想知道這有什麼竅門?也許我可以將jar文件添加到命令行?

非常感謝!

+0

您是否嘗試過運行該腳本?如果是這樣,你是否收到錯誤信息?被稱爲UDF的名稱是什麼? –

+0

如果您可以回答@ WinnieNicklaus的問題,那將有助於我們理解問題的可能性。這個問題太多了。 – Dan

+0

小熊和丹,我沒有試過運行腳本。因爲我實際上有兩個問題(或更多)。首先,我不確定我能夠如何生成myudfs.jar。所以在我的Mac上,我應該在eclipse上打開一個項目並添加豬的lib/jar,然後編寫UDF並將所有內容都包裝到myudfs.jar中?其次,在腳本中,我真的需要「註冊myudfs.jar」嗎?如果不是,豬如何找到罐子? – trillions

回答

1

如果腳本中沒有REGISTER語句(且腳本有效),那麼它不會調用任何可能的Pig的builtin functions以外的任何UDF。如果你想使用UDF,你將需要一個REGISTER聲明。如果沒有UDF被調用,那麼REGISTER是不必要的,這可能是爲什麼你沒有在你的腳本中看到它。

Here是編寫UDF的很好的參考。寫完之後,你需要將它編譯成一個jar文件,並確保包含它所依賴的任何類(如EvalFunc)。這是你將會REGISTER的罐子。

+0

非常感謝,小熊!我現在對在工作中閱讀的腳本感到驚訝,它調用了一些UDF,但在腳本的頂部沒有註冊...但是至少我可以首先構建自己的UDF以瞭解如何在腳本中運行它,然後我會了解更多:)真的很感謝你的幫助! :) – trillions