如何将 MongoDB MapReduce 速度提升 20 倍
分析在MongoDB中正成为越来越重要的话题,因为它在越来越多的大型项目中使用。人们厌倦了使用不同的软件来做分析(包括Hadoop),
分析在MongoDB中正成为越来越重要的话题,因为它在越来越多的大型项目中使用。人们厌倦了使用不同的软件来做分析(包括Hadoop),它们显然需要传输大量开销的数据。
MongoDB提供了两种内置分析数据的方法:Map Reduce和Aggregation框架。MR非常灵活,很容易部署。它通过分区工作良好,,并允许大量输出。MR在MongoDB v2.4中,通过使用JavaScript引擎把Spider Monkey替换成V8,性能提升很多。老板抱怨它太慢了,尤其是和Agg框架(使用C++)相比。让我们看看能否从中榨出点果汁。
练习让我们插入1千万条文档,每个文档包含一个从0到1000000的整数。这意味着平均有10个文档会具有相同的值。
> for (var i = 0; i > db.uniques.findOne()
{ "_id" : ObjectId("51d3c386acd412e22c188dec"), "dim0" : 570859 }
> db.uniques.ensureIndex({dim0: 1})
> db.uniques.stats()
{
"ns" : "test.uniques",
"count" : 10000000,
"size" : 360000052,
"avgObjSize" : 36.0000052,
"storageSize" : 582864896,
"numExtents" : 18,
"nindexes" : 2,
"lastExtentSize" : 153874432,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 576040080,
"indexSizes" : {
"_id_" : 324456384,
"dim0_1" : 251583696
},
"ok" : 1
}
从这其中,我们想要计算出现的不同值的个数。可以用下列MR任务轻松完成这个工作:
> db.runCommand(
{ mapreduce: "uniques",
map: function () { emit(this.dim0, 1); },
reduce: function (key, values) { return Array.sum(values); },
out: "mrout" })
{
"result" : "mrout",
"timeMillis" : 1161960,
"counts" : {
"input" : 10000000,
"emit" : 10000000,
"reduce" : 1059138,
"output" : 999961
},
"ok" : 1
}
正如你在输出内容中看到的,这耗费了大概1200秒(在EC2 M3实例上进行的测试)。有1千万个map,1百万个reduce,输出了999961个文档。结果就像下面这样:
> db.mrout.find()
{ "_id" : 1, "value" : 10 }
{ "_id" : 2, "value" : 5 }
{ "_id" : 3, "value" : 6 }
{ "_id" : 4, "value" : 10 }
{ "_id" : 5, "value" : 9 }
{ "_id" : 6, "value" : 12 }
{ "_id" : 7, "value" : 5 }
{ "_id" : 8, "value" : 16 }
{ "_id" : 9, "value" : 10 }
{ "_id" : 10, "value" : 13 }
...
更多详情见请继续阅读下一页的精彩内容:
MongoDB 的详细介绍:请点这里
MongoDB 的下载地址:请点这里
推荐阅读:
Java实现MongoDB中自增长字段
CentOS编译安装MongoDB
CentOS 编译安装 MongoDB与mongoDB的php扩展
CentOS 6 使用 yum 安装MongoDB及服务器端配置
Ubuntu 13.04下安装MongoDB2.4.3
如何在MongoDB中建立新数据库和集合
MongoDB入门必读(概念与实战并重)
《MongoDB 权威指南》(MongoDB: The Definitive Guide)英文文字版[PDF]

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

哈醫大臨床藥學就業前景如何儘管全國就業情況不容樂觀,但藥科類畢業生仍有著良好的就業前景。整體來看,藥科類畢業生的供給量少於需求量,各醫藥公司和製藥廠是吸收這類畢業生的主要管道,製藥業對人才的需求也穩定成長。據介紹,近幾年藥物製劑、天然藥物化學等專業的研究生供需比甚至達到1∶10。臨床藥學專業就業方向:臨床醫學專業學生畢業後可在醫療衛生單位、醫學科研等部門從事醫療及預防、醫學科研等方面的工作。就業機會:醫藥代表、醫藥銷售代表、銷售代表、銷售經理、區域銷售經理、招募經理、產品經理、產品專員、護

如何清理temp資料夾隨著我們在電腦上的使用,臨時檔案(temp檔案)會逐漸累積。這些臨時檔案是在我們使用電腦時產生的,例如瀏覽網頁時的快取檔案、軟體安裝時的臨時檔案等。長時間不清理temp資料夾可能會佔據大量磁碟空間,影響電腦運作速度。因此,定期清理temp資料夾是維護電腦效能的必要步驟。下面,我們將介紹清理temp資料夾的一些簡單方法。方法一:手動清理t

最近有小夥伴反應win10鏡像檔案該如何下載,因為市面的鏡像檔案多如牛毛,想找到正規的檔案下載,這可怎麼辦呢?今天小編帶來了下載鏡像的鏈接,詳細的解決步驟,具體的一起來看看吧。 win10鏡像快速下載安裝教學下載連結>>>系統之家Ghostwin101909鏡像64位元版v2019.11<<<>>>Win10鏡像64位元v2019.07<<<>>>Win10鏡像32位元v2019.07<< <1、透過網路檢索

Golang中使用快取加速MapReduce運算過程的實作。隨著資料規模的不斷增大和運算強度的日益增強,傳統的計算方式已經難以滿足人們對資料的快速處理需求。在這方面,MapReduce技術應運而生。然而,在MapReduce計算過程中,由於涉及大量鍵值對的操作,導致計算速度緩慢,因此如何最佳化計算速度也成為一個重要的問題。近年來,有不少開發者在Golang語言

如何查看win11電腦配置? win11系統是一款非常實用的電腦作業系統版本,為使用者提供了豐富的功能,讓使用者們能夠有更好的電腦操作體驗,那麼許多使用電腦的小夥伴們都很好奇自己電腦的具體配置,在win11系統中該如何進行這項操作呢?很多小夥伴不知道怎麼詳細操作,小編下面整理了win11電腦配置查看教程,如果你有興趣的話,跟著小編一起往下看看吧! win11電腦設定查看教學1、點選下方工作列的windows圖示或按下鍵盤「windows鍵」開啟開始功能表。 2、在開始功能表中找到「設定」或「sett

Win10系統如何重置?現在有很多小夥伴都是喜歡使用Win10系統的電腦,而在使用電腦的過程中難免會遇到一些無法解決的問題,這時候可以嘗試去重置系統,那麼該如何操作呢?下面就跟著小編一起來看Win10系統重置的教學吧,有需要的用戶可不要錯過。 Win10系統重置的教學 1、點選windows,選擇設定。 2、點選更新和安全性。 3、選擇恢復。 4、右側點選開始,重設此電腦。以上就是【Win10系統如何重置-Win10系統重置的教學】全部內容了,更多精彩教學盡在本站!

重裝系統時環境偵測未通過如何解決需要進行改寫的原因是:手機中毒了,可以安裝手機管家等防毒軟體進行防毒軟體進行防毒2、手機內部儲存了許多垃圾文件,導致手機運作記憶體被佔用。只要清理手機快取即可解決這個問題3、手機記憶體被保存的軟體和檔案佔用太多,需要經常刪除不需要的檔案和軟體沒問題,只要你的硬體設定符合安裝要求,你可以直接使用新的系統磁碟重新安裝系統!你可以使用U盤或硬碟來進行安裝,速度非常快。但是關鍵是要使用相容性好的系統碟(支援IDE、ACHI、RAID模式的安裝),並且能夠自動永久激活,已經經過驗證的。這樣

本文將教你如何在HTML中加入元素的值。我們對HTML中的value屬性以及使用value屬性的情況有基本的了解。讓我們期待對HTMLvalue屬性有更好的理解。在HTML中,value屬性用來描述與其一起使用的元素的值。對於各種HTML元件來說,它具有不同的意義。用法-它可以與、、、、、和、元素一起使用。 -當value屬性存在時,它指示輸入元素的預設值是什麼。對於各種類型的輸入,它都有不同的意義:當按鈕出現在"button,""reset,"和&qu
