2013-11-26 56 views
2

我想執行一個MR作業,我想通過配置文件將參數傳遞給作業。在mapper和reducer中也應該使用相同的參數。哪種API最適合實現這一目標?如何使用配置文件中的輸入參數執行Map Reduce作業

+1

這個問題被問明瞭的方式,我們可以的政績在運行MR作業時使用外部文件。這需要使用許多可能不知道的不同API。這個問題對那些人很有幫助。請考慮仍然持有這個問題。 – DebD

+0

說實話:這是一個非常相關的問題,前段時間我有同樣的問題,但谷歌和SO都顯示了一個簡單的答案,因此在這裏有這個精確的問題不是一個壞主意。我已經在許多SO問題上解釋了DBCache解決方案,但他們通常會問一個不同的問題。 – DDW

+0

嗨laalto,LaurentG,greg-449,devolus,Suresh。請參閱irW的評論,並重新考慮持有此問題。你阻止了別人可能面臨的同樣問題的更好的答案。 – DebD

回答

1

配置文件可以被添加到DistributedCache,我會告訴你它是如何在我的代碼完成:

要閱讀您的映射或減速的文件,最簡單的就是從分佈式緩存中打開它你的映射器/減速的設置:

@Override 
protected void setup(Context context) throws IOException, 
        InterruptedException { 

      Path[] uris = DistributedCache.getLocalCacheFiles(context 
        .getConfiguration()); 

      String patternsFile = uris[0].toString(); 


      BufferedReader in = new BufferedReader(new FileReader(patternsFile)); 
      ... 

      in.close(); 



     } 

將其添加到緩存中添加以下在設置工作:

try { 
      DistributedCache.addCacheFile(new URI(filename), job.getConfiguration()); 

     } catch (URISyntaxException e) { 
      System.out.println("URI exception: "+filename); 
      e.printStackTrace(); 
     } 
+0

您能否告訴我如何調用相同的文件並在運行作業時讀取放置在文件中的參數? – DebD

+0

一旦你得到了BufferedReader,只需使用:in.readLine()它讀取配置文件的一行。 – DDW

相關問題