2012-06-12 71 views
7

我是Hadoop/PIG的新手。 我有一個基本的問題。在PIG UDF中調試

我們在PIG UDF中有日誌記錄功能嗎?我寫了一個UDF,我需要驗證 我需要記錄某些語句來檢查流。是否有可用的日誌記錄工具?如果是,豬在哪裏存在?

回答

6

假設您的UDF延伸EvalFunc,您可以使用從EvalFunc.getLogger()返回的記錄器。日誌輸出應該在Pig執行的相關Map/Reduce任務中可見(如果作業在多個階段中執行,那麼您將不得不通過它們來找到關聯的日誌條目)。

+0

因此,日誌將最終在Map Reduce Task日誌文件中?我可以專門將我的日誌語句寫入單獨的文件嗎? – Uno

+0

是的,他們會。你可以,但是你必須去每個任務跟蹤器查看/收集它們。我想你可以嘗試配置遠程記錄器(例如登錄到數據庫)。 –

+0

我不確定,但你可以試試PigLogger--可能會把東西發回客戶端。 –

2

可能很明顯,但我建議在本地模式下調試您的UDF,然後再部署到集羣/僞集羣上。這樣,你就可以在你的IDE中進行調試(在我的情況下是eclipse),這比日誌調試更容易。

+0

有沒有一個網站或我可以遵循的一些步驟來開始使用Eclipse。我的意思是日食時的豬。 – Uno

+1

不知道有關網站的步驟,但它很簡單:將hadoop-core和pig依賴關係放入您的maven pom中,然後使用'org.apache.pig.PigServer'工作。試試'pigServer。registerScript(resource.getInputStream(),pigScriptParams,null);'然後'PigStats stats = pigServer.store(「final_output」,pigScriptParams.get(「output_folder」),pigStoreFunc).getStatistics();' – ihadanny