我在Eclypse中使用mapreduce時發生錯誤,我無法理解。在mapreduce地圖類中導入變量
映射一些功能我需要導入與我想用映射的新的已知特性(關鍵字)文件前。我首先將它導入覆蓋事件之後,但由於我有很多行,並且它爲每個映射導入它,所以計算時間很長。 我試圖導入我的類和@Override之間的變量只有一次導入,之後在類圖使用它,但我得到以下錯誤:
public static class Map extends Mapper<LongWritable, Text, Text, Text > {
HashSet<String> word = new HashSet<String>();
BufferedReader BR = new BufferedReader(new FileReader(
new File("/home/test")));
String token;
while((token = BR.readLine()) != null){
word.add(token);
}
@Override
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
後,我得到「字符串標記;」錯誤:令牌 語法錯誤「;」,{此令牌
後預期「而」錯誤後:在令牌 語法錯誤,ConstructorHeaderName有望代替
後「公共無效」的錯誤: 這條線上的多個標記 - 標記「,」,;的語法錯誤預期 - 令牌上的語法錯誤「,」,;預計 - 令牌「(」語法錯誤;預計 - 覆蓋
所以我的問題是是否有可能導入,我想在地圖類,但@override前使用變量,我該怎麼辦?是什麼?
隨着第一個答案,我嘗試使用 「公共靜態......」
public static Set<String> newHashSet(String... strings) {
HashSet<String> words = new HashSet<String>();
BufferedReader BR = new BufferedReader(new FileReader(
new File("/home/test")));
String token;
while((token = BR.readLine()) != null){
words.add(mot);
}
return words;
}
但我再次出現錯誤。
當我嘗試閱讀我的文件,我在這行 得到 多個標記 - 未處理的異常類型 FileNotFoundException異常 - 資源泄漏:「BR」是永遠不會關閉
,並在while循環 未處理的異常類型爲IOException
我只想導入我的文件並存儲數據以便稍後在我的mapreduce任務中使用它作爲條件。
您可以發佈完整的代碼和完整的堆棧跟蹤? – LppEdd
while循環不是構造函數或方法的一部分。這就是爲什麼你會得到這個錯誤。 – john16384