2013-10-07 254 views
1

我遇到的問題是hadoop jar命令需要輸入路徑,但我的MapReduce作業從數據庫獲取其輸入,因此不需要/具有輸入目錄。我已經將JobConf輸入格式設置爲DBInputFormat,但當我的工作出現問題時,該如何表示?hadoop - Hadoop jar輸入路徑問題

//Here is the command 
hadoop jar <my-jar> <hdfs input> <hdfs output> 

我有一個輸出文件夾,但不需要輸入文件夾。有沒有辦法繞過這個?我是否需要編寫第二個程序將數據庫數據拖入一個文件夾中,然後在MapReduce作業中使用它?

回答

5

hadoop jar命令不需要命令行參數,除了主類以外。您的地圖/縮小作業的命令行參數將由程序本身決定。因此,如果它不再需要HDFS輸入路徑,那麼您需要將代碼更改爲不需要。

public class MyJob extends Configured implements Tool 
{ 
    public void run(String[] args) throws Exception { 
    // ... 
    TextInputFormat.setInputPaths(job, new Path(args[0])); // or some other file input format 
    TextOutputFormat.setOutputPath(job, new Path(args[1])); 
    } 
} 

所以你會刪除輸入路徑語句。在JAR開展這項工作方面沒有什麼魔力,只需要改變InputFormat(你說過的那樣),然後你就可以設置。

+0

好的名字和感謝您的澄清。 – Mastergeek