2013-01-24 94 views
0

我正在學習豬作業,並希望通過使用PigServer的Java代碼在遠程集羣上運行豬腳本。任何人都可以指導我如何實現這一目標?提前致謝。遠程運行豬作業

回答

1

您必須使用PigServer類連接到您的羣集,註冊您的豬查詢並獲得結果。您可以選擇通過在磁盤上傳遞文件名來運行腳本,也可以直接編寫您的Pig腳本行並將其作爲Java字符串傳遞。

從文件名傳遞一個豬腳本:

PigServer pig = new PigServer(ExecType.MAPREDUCE); 
pig.registerScript("/path/to/test.pig"); 

要通過你的豬程序作爲字符串:

PigServer pig = new PigServer(ExecType.MAPREDUCE); 
pig.registerQuery("A = LOAD 'something' USING PigLoader();"); 

你可以拿回例如,結果是這樣的:

Iterator<Tuple> i = pig.openIterator("A"); 
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); 
while (i.hasNext()) { 
    Integer val = DataType.toInteger(i.next().get(0)); 
    map.put(val, val);    
} 

請注意,您需要在類路徑中包含一些屬性,即fs.default.namemapred.job.tracker或者您可以將它們添加到PigServer的構造函數中。

+0

謝謝查爾斯..我會嘗試並接受答案:) – Ajn

+0

我試過這個,但我無法理解在何處傳遞hadoop系統的網址。 – animal

3

以上代碼是否可用於遠程呼叫,即Pig安裝在羣集1上&調用是從羣集外的應用程序服務器進行的?