2012-07-06 78 views
7

我一直在試圖理解MongoDB中的MapReduce的基礎知識,甚至在實現它之後,我不確定它與SQL的GROUP BY甚至Mongo自己的GROUP BY有什麼不同。在SQL服務器中,GROUP BY可以通過流或散列聚合來完成。 MapReduce與散列彙總不同,只是在大量的服務器上?
MapReduce和SQL GROUP BY

我一直在閱讀MR for MongoDB作爲後臺進程的地方,因爲它是一個「繁重的操作」。鑑於數據被分割,GROUP BY不會同樣「重」嗎?也就是說,我只是試圖比較可能作爲MR作業或使用GROUP BY查詢實現的那些類型的操作。

GROUP BY不能做什麼,只有MR能做什麼?

此外,Hadoop似乎是非常擅長於MR(這只是我已閱讀..我從來沒有在Hadoop工作過)。 Hadoop的MR與Mongo的MR有什麼不同?

我很困惑。請幫助或指導我解釋MapReduce需求的好教程。

回答

7

使用MR獲得的是速度。 SQL中的GROUP BY是一個緩慢的操作,而MR在MongoDB中更慢。但是你要做的是創建新的集合並實時迭代它們。當你有大量的數據並希望能夠實時迭代它時,這是非常好的。

在我正在研究的項目中,有一個Python腳本在後臺運行(cron job),每天做一次不同的映射/縮減。我們不是使用SQL group by迭代大型表,而是使用MR迭代一次,然後快速迭代所創建的新集合。

我沒有Hadoop的經驗。所以我很抱歉,我無法填補你的空缺。

教程: http://www.mongovue.com/2010/11/03/yet-another-mongodb-map-reduce-tutorial/

編輯:

在這裏你可以看到一個SQL查詢到MongoDB的地圖的整個翻譯/縮小:http://rickosborne.org/download/SQL-to-MongoDB.pdf

+0

感謝您的洞察力。然後,我認爲MapReduce基本上是一種聚合的「哲學」,如果我們可以即時生成新表並將中間MR結果存儲到SQL服務器中,他們? – 2012-07-06 09:38:52

+0

不要忘記標記爲答案,如果它確實回答你的問題或至少投票! :) – Ms01 2012-07-06 09:55:33

+0

不錯的圖表:) Upvoted .... – 2012-07-06 10:18:47

3

GROUP BY to MongoDB Map/Reduce 它取自很多人使用MongoDB作爲數據存儲和Hadoop進行處理,因爲兩者之間存在連接。每個MongoDB節點可以處理多個讀入其中的Hadoop節點。作爲一個說明,我建議將mongo和Hadoop節點分開存儲。

如果你沒有他們,這裏的一些文件,爲您

另一件事,可能是值得看着是新的aggregation framework2.2出來。這裏的chart等同於SQL中的操作與MongoDB彙總框架中的操作。

+0

偉大的鏈接..謝謝!將檢查出來.. – 2012-07-06 10:49:41

+0

是的,upvoted :)再次感謝;你給了我一個全新的分支去探索! – 2012-07-06 13:58:13