2014-01-22 30 views
1

已經設置的Hadoop 2.2 .Trying從例如WORDCOUNT(附帶的Hadoop)hereJar文件(配置,字符串)

替換刪除廢棄的API

Job job = new Job(conf, "word count"); 

與不推薦使用的API

編輯:

Job job = Job.getInstance(conf, "word count"); 

編譯錯誤是

Job.getInstance無法解析爲某個類型。

已導入(舊API或MR1)的Job類似乎沒有此方法。

哪個JAR包含這一新的招聘類Job.getInstance(Configuratio,String)方法

如何解決這個問題?此示例是否有任何其他更改以遷移到MapReduce v2?

回答

0

Job.getInstance無法解析爲類型。

您收到錯誤消息,因爲必需的庫不存在於您的應用程序類路徑中。您需要在您的類路徑中存在hadoop-core*.jar文件來解決此問題。

通過該JAR包含這一新的招聘類 Job.getInstance(Configuratio,String)方法

包含hadoop-core-*.jar文件中的org.apache.hadoop.mapreduce.Job類的方式。 ( - Cloudera的,HDF - 鼎暉hortenworks等)的JAR文件的名稱將被Hadoop的版本和供應商名稱被追加

建議:

Job.getInstance()是靜態的API,而無需創建的一個實例工作類來訪問它。有趣的是,getInstance()用於創建Job類的新實例,如果您已經有一個使用new關鍵字創建的實例,則不需要再次撥打getInstance

如果您使用的是舊的MapReduce API,繼續使用new Job()創建實例替換Job job = new Job.getInstance(conf, "word count");Job job = Job.getInstance(conf, "word count");

0

。如果您已遷移到新的API,請使用Job job = Job.getInstance(conf, "word count");

0

嘗試 Job job = Job.getInstance(conf,「word count」); 更改爲 Job job = new Job(conf);

2

我如何解決這個問題是通過添加hadoop-core作爲依賴。我只指定了hadoop-common

<dependency> 
    <groupId>org.apache.hadoop</groupId> 
    <artifactId>hadoop-core</artifactId> 
    <version>1.2.1</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.hadoop</groupId> 
    <artifactId>hadoop-common</artifactId> 
    <version>2.7.2</version> 
</dependency> 

0

與此

 Configuration conf = new Configuration(); 
     Job job = new Job(conf); 

 Job job = new Job(new Configuration()); 
更改它
相關問題