2012-07-20 35 views
0

Using DistributedCache in Hadoop by YavcularHadoop中

調用非靜態方法從靜態映射類中在上述連桿中,描述瞭如何使用DistributedCache Hadoop中以容易理解的方式。但問題是,當我編譯代碼時,出現以下錯誤:

non-static method loadIdUrlMapping(org.apache.hadoop.mapreduce.Mapper.Context) cannot be referenced from a static context 
     loadIdUrlMapping(context); 

解決方法是什麼?我無法將Mapper類更改爲非靜態方法,並且當我將方法簽名更改爲static時,我無法訪問idmap HashSet

+0

你可以發表你的版本的代碼 - 鏈接的文章中沒有'cacheItemset'方法 – 2012-07-20 10:34:27

+0

抱歉,我只是將loadIdUrlMapping(上下文上下文)更改爲cacheItemset(上下文上下文)。一樣的東西。 – Ahmedov 2012-07-21 02:47:04

回答

0

您需要發佈您的代碼版本以確保我想你有一個名爲cacheItemset方法定義爲靜態的範圍:

public static void cacheItemset(Context) { 
    loadIdUrlMapping(context); 
} 

loadUrlMapping沒有被定義爲一個靜態方法,所以你得到一個編譯錯誤。

如果ReplacementMapper類的版本在它自己的類文件中,那麼在類聲明中不需要static關鍵字(只有在ReplacementMapper類是另一個類的內部類時才需要)。

+0

對不起,我只是將loadIdUrlMapping(上下文上下文)更改爲cacheItemset(上下文上下文)。一樣的東西。 – Ahmedov 2012-07-21 02:48:07

+0

pastebin您的實際代碼請 – 2012-07-21 13:18:40

+0

我自己解決了這個問題。事情是,不是將該方法放置在靜態地圖類中,而是錯誤地放置在主公共類中。移動了方法,問題解決了。謝謝你的幫助 – Ahmedov 2012-07-25 15:40:25