摘要:中的相當于中的,所以在上使用進行并行統計比較容易。使用要實現兩個函數和函數,函數調用,遍歷中所有記錄,將與傳遞給函數進行處理。由此可見,這并不是成線性增長,而是隨著數據量增長,時間也在不斷的遞增,而且單位時間內增長的數據量也會減少。
MongoDB中的MapReduce相當于Mysql中的group by, 所以在MongoDb上使用Map/Reduce進行并行"統計"比較容易。使用MapReduce要實現兩個函數Map和Reduce函數,Map函數調用emit(key, value),遍歷collection中所有記錄,將key與value傳遞給Reduce函數進行處理。Map函數和Reduce函數可以使用javascript來實現??梢酝ㄟ^db.runCommand()或mapReduce()命令來執行MapReduce操作。
下列是runCommand()函數與參數說明
db.runCommand( "mapreduce":,//要操作的目標集合 "map": ,//映射函數(生成鍵值對序列,做為reduce函數參考) "reduce": //統計函數 [,query: ]//目標記錄過濾 [,sort:<>]//目標記錄排序 [,limit: ]//限制目標記錄數量 [,out: ]//統計結果存放集合(不指定則使用臨時集合,在客戶端斷開后自動刪除) [,keeptem: ]//是否保留臨時集合 [,finalize: ]//最終處理函數(對reduce返回結果進行最終整理后存入結果集合) [,scope:
我們先準備一些數據(用php腳本暫時insert十萬數據,大概需要8.35秒):
ini__set("max_execution_time", 300)是適應瀏覽器執行時,出現的30秒超時。
接下來,我們利用php來統計uid。(10萬條數據,大概耗時7.29秒)
這個腳本大概運行7~8秒鐘,我們利用MongoCode()建立Map和Reduce函數,然后通過out選擇建立臨時表,在這有我們留下臨時表,不做刪除。
生成表的數據格式有兩個元素,一個uid為_id、另一個是這個uid出現的次數,存在value。
我們再次用insert腳本插入90萬數據,弄成100萬的數據。這次耗時是1.7min。由此可見,這并不是成線性增長,而是隨著數據量增長,時間也在不斷的遞增,而且單位時間內增長的數據量也會減少。
好,那我們再次執行map腳本,看看需要多長時間。這次大概耗時1分鐘20秒左右。
但是如果我們用平常的方法,利用循環、判斷、組合來分組的話,耗時已經不僅僅為1分鐘了,時間會更長。
所以,在合適的時候用MapReduce會事半功倍的。這只是處理100萬的數據,但是如果處理更多的數據時,上千萬的數據,也會更節省時間,當然隨著數據量的增多,需要注意更多方面的問題,譬如內存是否足夠等等。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/18707.html
摘要:簡單地說,倒排索引就是把與對調之后的索引,構建倒排索引的目的是提升搜索性能。本文將介紹中兩種構建倒排索引的方法與。 摘要: 為MongoDB中的數據構建倒排索引(Inverted Index),然后緩存到內存中,可以大幅提升搜索性能。本文將通過為電影數據構建演員索引,介紹兩種構建倒排索引的方法:MapReduce和Aggregation Pipeline。 GitHub地址: 作者:...
摘要:簡述從字面上來理解就是兩個過程映射以及化簡。在映射化簡的過程都是每臺服務器自己的在運算,大量的服務器同時來進行運算工作,這就是大數據基本理念。映射操作輸出了鍵值對結果。在中,所有的映射化簡函數都是使用編寫,并且運行在進程中。 簡述 mapReduce從字面上來理解就是兩個過程:map映射以及reduce化簡。是一種比較先進的大數據處理方法,其難度不高,從性能上來說屬于比較暴力的(通過N...
摘要:操作花費的時間,單位是毫秒。處理完成后,會自動將臨時集合的名字更改為你指定的集合名,這個重命名的過程是原子性的。作用域在這些函數內部是不變的。上一篇文章指南聚合下一篇文章指南聚合命令 上一篇文章:MongoDB指南---16、聚合下一篇文章:MongoDB指南---18、聚合命令 MapReduce是聚合工具中的明星,它非常強大、非常靈活。有些問題過于復雜,無法使用聚合框架的查詢語言...
摘要:操作花費的時間,單位是毫秒。處理完成后,會自動將臨時集合的名字更改為你指定的集合名,這個重命名的過程是原子性的。作用域在這些函數內部是不變的。上一篇文章指南聚合下一篇文章指南聚合命令 上一篇文章:MongoDB指南---16、聚合下一篇文章:MongoDB指南---18、聚合命令 MapReduce是聚合工具中的明星,它非常強大、非常靈活。有些問題過于復雜,無法使用聚合框架的查詢語言...
摘要:本文我們就來看看中的使用。結果如下錢鐘書宋詩選注談藝錄魯迅彷徨實現我們也可以利用命令來執行。 玩過Hadoop的小伙伴對MapReduce應該不陌生,MapReduce的強大且靈活,它可以將一個大問題拆分為多個小問題,將各個小問題發送到不同的機器上去處理,所有的機器都完成計算后,再將計算結果合并為一個完整的解決方案,這就是所謂的分布式計算。本文我們就來看看MongoDB中MapRedu...
閱讀 3433·2023-04-25 18:14
閱讀 1526·2021-11-24 09:38
閱讀 3244·2021-09-22 14:59
閱讀 3060·2021-08-09 13:43
閱讀 2562·2019-08-30 15:54
閱讀 563·2019-08-30 13:06
閱讀 1540·2019-08-30 12:52
閱讀 2719·2019-08-30 11:13