成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

MongoDb之MapReduce

avwu / 2186人閱讀

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

  

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

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

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


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

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

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

我們?cè)俅斡胕nsert腳本插入90萬(wàn)數(shù)據(jù),弄成100萬(wàn)的數(shù)據(jù)。這次耗時(shí)是1.7min。由此可見(jiàn),這并不是成線性增長(zhǎng),而是隨著數(shù)據(jù)量增長(zhǎng),時(shí)間也在不斷的遞增,而且單位時(shí)間內(nèi)增長(zhǎng)的數(shù)據(jù)量也會(huì)減少。

好,那我們?cè)俅螆?zhí)行map腳本,看看需要多長(zhǎng)時(shí)間。這次大概耗時(shí)1分鐘20秒左右。

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/18707.html

相關(guān)文章

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

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

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

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

    madthumb 評(píng)論0 收藏0
  • MongoDB指南---17、MapReduce

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

    jonh_felix 評(píng)論0 收藏0
  • MongoDB指南---17、MapReduce

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

    pubdreamcc 評(píng)論0 收藏0
  • MongoDBMapReduce使用

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

    Near_Li 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<