2013-06-20 24 views
0

我已經寫了一個InvertedIndex java程序,在給定一個單詞的情況下,它搜索字符串的某個靜態數組中的單詞,其中每個字符串都是一個url需要進行搜索。它最後返回的所有URL的李斯特,這個詞在發現重寫我的程序,使它適合map-reduce結構

這裏是我的相關代碼:

static final String[] URL_SEARCH_LIST = { 
     "http://www.cnn.com", "http://www.daniel.com", "http://www.amazon.com" 
    }; 
private static List<String> search (String query) { 
     try { 
      List<String> urlList = new ArrayList<String>(); 
      for (String site : URL_SEARCH_LIST) { 
       URL url = new URL(site); 
       HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
       conn.setRequestMethod("GET"); 
       BufferedReader br = new BufferedReader(new InputStreamReader(
         (conn.getInputStream()))); 
       String htmlContent; 
       while ((htmlContent = br.readLine()) != null) { 
        if (htmlContent.contains(query)) { 
         urlList.add(site); 
         break; 
        } 
       } 
      } 
      System.out.println("Search for: " + query + " Is Done!"); 
      return urlList; 

     } catch (Exception e) { 
      System.out.println(e.getMessage()); 
      return null; 
     } 
    } 

現在我想就在Amazon EMR此運行,這意味着我需要我的轉換程序到一個Map-Reduce程序,它執行相同的操作。

鑑於此代碼,有人可以幫我開始嗎?我沒有完全理解地圖​​的概念,並降低...提前

感謝

回答

1

的map-reduce基本上是分而治之加了很多的基礎設施,所以劃分上(圖)您URL_SEARCH_LIST陣列,創建每個本地urlList,並組合(減少)所有urlLists以獲得最終輸出

+0

如何確定將有多少個地圖?是我的本地urlList是整個列表每次?你可以嘗試給我一個基於我的map-reduce代碼示例嗎? – DanielY

+0

映射每個網址 - 基礎設施將負責所有的負載平衡。 –

+0

請參閱[維基百科文章](http://en.wikipedia.org/wiki/MapReduce)中的字數統計示例 - 地圖功能會對每個字詞進行分割,並讓負載均衡器負責其餘部分。在你的情況下,本地'urlList'是字數計數例子'1'始終是值的值。 –