2

EMRの分散キャッシュからファイルをシーケンシングしようとしていますが、EMRの分散キャッシュからファイルを読み込めません。私のコードはローカルでうまく動作しますが、emrに問題があります。ここでpath-EMRの分散キャッシュからシーケンスファイルを読み取ることができません

private void loadMap(String filePath,Configuration conf) throws IOException 
    { 
     try { 
      Path somePath=new Path(filePath); 
      reader=new Reader(somePath.getFileSystem(conf),somePath,conf); 
     // brReader = new BufferedReader(new FileReader(filePath)); 
      Writable key= new Text(); 
      Writable value=new Text(); 
      // Read each line, split and load to HashMap 
      while (reader.next(key,value)) { 
      // String index[]=strLineRead.toString().split(Pattern.quote(" - ")); 
       rMap.put(key.toString(),value.toString()); 
      } 
     } 
     catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     finally { 
      if (reader != null) { 
       reader.close(); 
      } 
     } 
    } 

すべてのヘルプからファイルを読み込むpath-

for (Path eachPath : cacheFilesLocal) { 
loadMap(eachPath.getName(),context.getConfiguration()); 
} 

を読む分散cache-

job.addCacheFile(new URI(status.getPath().toString())); 

に私のコードsnippet-

置くシーケンスファイルです感謝されます。引数で

+0

私はカスタムJARにCACHEFILEへのアクセスに苦労しています...私のために働きました。 – chetan

答えて

0

は、ドライバのクラスで今すぐドキュメントenter link description here

あたりとしてS3のパスを提供し、引数 などを使用します。

job.addCacheFile(new URI(args[3])); 
    job.addCacheFile(new URI(args[4])); 
    job.addCacheFile(new URI(args[5])); 
    job.addCacheFile(new URI(args[5])); 

そしてマッパーでは、いつものようにキャッシュファイルを使用します。

cacheFiles = context.getCacheFiles(); 
     if (cacheFiles != null) { 
      File cityCacheFile = new File("AreaCityCountryCache"); 

関連する問題