2013-07-16 37 views
3

我有這個java程序,它在MapReduce模式下執行豬腳本。下面是代碼:Java&Pig - 將參數傳遞給PigServer的豬腳本

import java.io.IOException; 
import java.util.Properties; 
import org.apache.pig.ExecType; 
import org.apache.pig.PigServer; 
import org.apache.pig.backend.executionengine.ExecException; 


public class pigCV { 


public static void main(String args[]){ 

PigServer pigServer; 
try { 

Properties props = new Properties(); 
props.setProperty("fs.default.name", "hdfs://hdfs://localhost:8022"); 
props.setProperty("mapred.job.tracker", "localhost:8021"); 

pigServer = new PigServer(ExecType.MAPREDUCE, props); 

pigServer.registerScript("Desktop/text_v3.pig"); 

} 
catch (ExecException e) { e.printStackTrace(); } 
catch (IOException e) { e.printStackTrace(); } 

} 


} 

通過Linux的命令行,我可以傳遞參數給豬腳本這樣的命令:

豬-f「桌面/ text_v3.pig 「-param param1 = value1 -param2 = value2

但是對於PigServer,我沒有找到如何去做。

你知道如何解決這個問題嗎?

謝謝。

+0

你如何在registrycript之後執行這個腳本? –

回答

3

您可以使用此版本的registerScript方法:

public void registerScript(String fileName, Map<String,String> params) 

的Java文檔的解釋如下:「註冊一個豬腳本文件的文件中的參數將與PARAMS的值來取代。 「