2015-05-29 63 views
0

我想在hadoop hdfs上使用我的java類,現在我必須重寫我的函數。 問題是,如果我使用InputStreamReader,我的應用程序讀取錯誤的值。java hadoop:FileReader VS InputStreamReader

這裏我的代碼(所以它的工作,我想用註釋掉的代碼部分):

public static GeoTimeDataCenter[] readCentersArrayFromFile(int iteration) { 
    Properties pro = new Properties(); 
    try { 
     pro.load(GeoTimeDataHelper.class.getResourceAsStream("/config.properties")); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    int k = Integer.parseInt(pro.getProperty("k")); 
    GeoTimeDataCenter[] Centers = new GeoTimeDataCenter[k]; 
    BufferedReader br; 
    try { 
     //Path pt=new Path(pro.getProperty("seed.file")+(iteration-1)); 
     //FileSystem fs = FileSystem.get(new Configuration()); 
     //br=new BufferedReader(new InputStreamReader(fs.open(pt))); 
     br = new BufferedReader(new FileReader(pro.getProperty("seed.file")+(iteration-1))); 
     for(int i =0; i<Centers.length; i++){ 
      String[] temp = null; 
      try{ 
       temp = br.readLine().toString().split("\t"); 
       Centers[i] = new GeoTimeDataCenter(Integer.parseInt(temp[0]),new LatLong(Double.parseDouble(temp[1]),Double.parseDouble(temp[2])),Long.parseLong(temp[3])); 
      } 
      catch(Exception e) { 
       temp = Seeding.randomSingleSeed().split("\t"); 
       Centers[i] = new GeoTimeDataCenter(i,new LatLong(Double.parseDouble(temp[0]),Double.parseDouble(temp[1])),DateToLong(temp[2])); 
      } 
     } 
     br.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return Centers; 
} 

也許有人知道這個問題嗎?

最好的問候

+0

你期待什麼價值?你有什麼價值? – Virmundi

+0

它應該讀取一個種子文件,例如k = 4:具有2個double值的4行和由tabulator分隔的一個long值。 –

回答

1

我發現了這個問題。我有一個校驗和異常。現在我從我的輸入文件中刪除所有.crc文件。通過這種方式,我得不到校驗和異常,並且緩衝讀取器工作正常(未註釋的代碼部分,樓上)。

相關問題