用C#感受MongoDB MapReduce之魅力

來源:互聯網
上載者:User

MapReduce這個名詞隨著hadoop的使用者的增多,越來越被人關注。MapReduce可謂MongoDB之中的亮點,我也想深入瞭解MapReduce,加上MongoDB操作簡單,所以就選擇了它。MapReduce可以把問題劃分為多個不同部分並分發到不同伺服器平行處理問題,每台伺服器都把分配給自己的一部分問題處理完畢後,把結果返回給主伺服器,主伺服器匯總結果,最終完成問題的處理。

Map首先將文檔映射到集合併作業文檔,這一步可能產生多個鍵和多個值或者什麼也沒有(文檔中要處理的值為空白)。而後按照鍵分組,並將產生的值組成列表放到對應的鍵中。Reduce則把列表中的值化簡為一個值。這個值被返回,而後繼續按鍵分組,進行化簡,直到每個鍵在列表中只有一個值為止,這個值也就是最終結果。

在MongoDB中,需要用JavaScript寫一個Map()函數和一個Reduce()函數。Map函數使用emit函數返回要處理的值。Emit會傳給redcuce函數一個鍵和一個值。Reduce 函數接收兩個參數,第一個是key,接收emit返回的鍵;第二個是values數組,也就是emit返回的值,它有一個或者多個對應於鍵的文檔組成。

下面寫一個執行個體,用執行個體感悟一下MapReduce。

首先建一實體類,

接下來串連資料庫,

插入幾條測試記錄,

下面就是本例的核心,兩個JavaScript方法,主要用於統計不同的單詞在集合中出現的次數,

用以下代碼可以遍曆mapreduce返回的結果

執行結果

本例mapreduce處理結果的方法可能類似,執行過程可能不太一樣,但是思想就是這麼個思想,

運行計算時,mongodb會產生幾個中間結果,結束後會被自動刪除,

可以再寫一對JavaScript函數,統計下單詞出現在哪個記錄裡,

執行結果如下(虛線下面的部分)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.