成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

MongoDb之MapReduce

avwu / 2143人閱讀

摘要:中的相當(dāng)于中的,所以在上使用進行并行統(tǒng)計比較容易。使用要實現(xiàn)兩個函數(shù)和函數(shù),函數(shù)調(diào)用,遍歷中所有記錄,將與傳遞給函數(shù)進行處理。由此可見,這并不是成線性增長,而是隨著數(shù)據(jù)量增長,時間也在不斷的遞增,而且單位時間內(nèi)增長的數(shù)據(jù)量也會減少。

  

MongoDB中的MapReduce相當(dāng)于Mysql中的group by, 所以在MongoDb上使用Map/Reduce進行并行"統(tǒng)計"比較容易。使用MapReduce要實現(xiàn)兩個函數(shù)Map和Reduce函數(shù),Map函數(shù)調(diào)用emit(key, value),遍歷collection中所有記錄,將key與value傳遞給Reduce函數(shù)進行處理。Map函數(shù)和Reduce函數(shù)可以使用javascript來實現(xiàn)。可以通過db.runCommand()或mapReduce()命令來執(zhí)行MapReduce操作。

下列是runCommand()函數(shù)與參數(shù)說明

    db.runCommand(
        "mapreduce":,//要操作的目標(biāo)集合
        "map":,//映射函數(shù)(生成鍵值對序列,做為reduce函數(shù)參考)
        "reduce"://統(tǒng)計函數(shù)
        [,query:]//目標(biāo)記錄過濾
        [,sort:<>]//目標(biāo)記錄排序
        [,limit:]//限制目標(biāo)記錄數(shù)量
        [,out:]//統(tǒng)計結(jié)果存放集合(不指定則使用臨時集合,在客戶端斷開后自動刪除)
        [,keeptem:]//是否保留臨時集合
        [,finalize:]//最終處理函數(shù)(對reduce返回結(jié)果進行最終整理后存入結(jié)果集合)
        [,scope:]//向map/reduce/finalize導(dǎo)入外部變量。
        [,verbose:true]//顯示詳細的時間統(tǒng)計信息
    );


我們先準(zhǔn)備一些數(shù)據(jù)(用php腳本暫時insert十萬數(shù)據(jù),大概需要8.35秒):

ini__set("max_execution_time", 300)是適應(yīng)瀏覽器執(zhí)行時,出現(xiàn)的30秒超時。
接下來,我們利用php來統(tǒng)計uid。(10萬條數(shù)據(jù),大概耗時7.29秒)

這個腳本大概運行7~8秒鐘,我們利用MongoCode()建立Map和Reduce函數(shù),然后通過out選擇建立臨時表,在這有我們留下臨時表,不做刪除。
生成表的數(shù)據(jù)格式有兩個元素,一個uid為_id、另一個是這個uid出現(xiàn)的次數(shù),存在value。

我們再次用insert腳本插入90萬數(shù)據(jù),弄成100萬的數(shù)據(jù)。這次耗時是1.7min。由此可見,這并不是成線性增長,而是隨著數(shù)據(jù)量增長,時間也在不斷的遞增,而且單位時間內(nèi)增長的數(shù)據(jù)量也會減少。

好,那我們再次執(zhí)行map腳本,看看需要多長時間。這次大概耗時1分鐘20秒左右。

但是如果我們用平常的方法,利用循環(huán)、判斷、組合來分組的話,耗時已經(jīng)不僅僅為1分鐘了,時間會更長。

所以,在合適的時候用MapReduce會事半功倍的。這只是處理100萬的數(shù)據(jù),但是如果處理更多的數(shù)據(jù)時,上千萬的數(shù)據(jù),也會更節(jié)省時間,當(dāng)然隨著數(shù)據(jù)量的增多,需要注意更多方面的問題,譬如內(nèi)存是否足夠等等。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/18707.html

相關(guān)文章

  • MongoDB優(yōu)化倒排索引

    摘要:簡單地說,倒排索引就是把與對調(diào)之后的索引,構(gòu)建倒排索引的目的是提升搜索性能。本文將介紹中兩種構(gòu)建倒排索引的方法與。 摘要: 為MongoDB中的數(shù)據(jù)構(gòu)建倒排索引(Inverted Index),然后緩存到內(nèi)存中,可以大幅提升搜索性能。本文將通過為電影數(shù)據(jù)構(gòu)建演員索引,介紹兩種構(gòu)建倒排索引的方法:MapReduce和Aggregation Pipeline。 GitHub地址: 作者:...

    Nino 評論0 收藏0
  • mongoDB高級篇②】大數(shù)據(jù)聚集運算mapReduce(映射化簡)

    摘要:簡述從字面上來理解就是兩個過程映射以及化簡。在映射化簡的過程都是每臺服務(wù)器自己的在運算,大量的服務(wù)器同時來進行運算工作,這就是大數(shù)據(jù)基本理念。映射操作輸出了鍵值對結(jié)果。在中,所有的映射化簡函數(shù)都是使用編寫,并且運行在進程中。 簡述 mapReduce從字面上來理解就是兩個過程:map映射以及reduce化簡。是一種比較先進的大數(shù)據(jù)處理方法,其難度不高,從性能上來說屬于比較暴力的(通過N...

    madthumb 評論0 收藏0
  • MongoDB指南---17、MapReduce

    摘要:操作花費的時間,單位是毫秒。處理完成后,會自動將臨時集合的名字更改為你指定的集合名,這個重命名的過程是原子性的。作用域在這些函數(shù)內(nèi)部是不變的。上一篇文章指南聚合下一篇文章指南聚合命令 上一篇文章:MongoDB指南---16、聚合下一篇文章:MongoDB指南---18、聚合命令 MapReduce是聚合工具中的明星,它非常強大、非常靈活。有些問題過于復(fù)雜,無法使用聚合框架的查詢語言...

    jonh_felix 評論0 收藏0
  • MongoDB指南---17、MapReduce

    摘要:操作花費的時間,單位是毫秒。處理完成后,會自動將臨時集合的名字更改為你指定的集合名,這個重命名的過程是原子性的。作用域在這些函數(shù)內(nèi)部是不變的。上一篇文章指南聚合下一篇文章指南聚合命令 上一篇文章:MongoDB指南---16、聚合下一篇文章:MongoDB指南---18、聚合命令 MapReduce是聚合工具中的明星,它非常強大、非常靈活。有些問題過于復(fù)雜,無法使用聚合框架的查詢語言...

    pubdreamcc 評論0 收藏0
  • MongoDBMapReduce使用

    摘要:本文我們就來看看中的使用。結(jié)果如下錢鐘書宋詩選注談藝錄魯迅彷徨實現(xiàn)我們也可以利用命令來執(zhí)行。 玩過Hadoop的小伙伴對MapReduce應(yīng)該不陌生,MapReduce的強大且靈活,它可以將一個大問題拆分為多個小問題,將各個小問題發(fā)送到不同的機器上去處理,所有的機器都完成計算后,再將計算結(jié)果合并為一個完整的解決方案,這就是所謂的分布式計算。本文我們就來看看MongoDB中MapRedu...

    Near_Li 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<