爲什麼在MapReduce中需要Reduce?如果一項工作(例如統計書中單詞的數量)將導致相同的結果(如果由單個流程執行或MapReduced在服務器場中執行),那麼重複項必須被刪除的可能性有多大?我假定Reduce步驟,至少在本例中,將簡單地彙總來自每個工作進程的結果並提供本書中單詞的總數。我不明白哪裏有重複的東西出現在圖片中。是否總是需要刪除MapReduce中的重複項?
1
A
回答
1
Reduce步驟並不意味着刪除重複項(儘管在某些情況下這是一個可能的用例)。 Reduce是爲了彙總來自不同映射器的輸出而使用相同的密鑰。
例如,在單詞計數示例中,節點1可能會得到一個單詞的10個實例,例如「school」,節點2可能有15個實例,節點3 12個實例。現在如何計算總和?結果10,15和12在不同的節點上。有一個隨機播放階段,將所有這些值帶到一個節點(這是分區器分配給關鍵「學校」的縮減器)。然後減速器將具有該鍵的所有值,並且可以將它們相加。
編輯:由於鐸提到的,通過聚集我的意思是「彙集」
EDIT2的更一般意義上的聚集:爲了澄清RaffiM的疑問: 繼續上面的例子,假設節點1有1頁10,節點2有11-20頁,節點3有21-30頁。因此,在毛澤東之後,我們知道Pages 1-10有10次單詞「school」,11-20頁有15次出現,15-30次出現在第21-30頁。現在我們需要的是這個詞在整本書中出現的總次數,所以我們仍然需要添加這些詞。我們需要10 + 15 + 12 +其他頁面範圍的數字......
如果您不使用組合器,則映射器每次出現該單詞時都會發送「1」。因此,對於1-10頁,它將發送<「學校」,1>作爲輸出鍵值10次。爲了提高效率,我們使用組合器,在映射器級別對其進行彙總。因此,如果您使用組合器,它將在節點1本身中消耗此資源,併爲節點1生成合並輸出<「學校」,10>。
5
減少是一種更爲普遍的操作。這並不一定意味着「通過重複應用操作(例如求和)來聚合一堆數值」。的正式定義地圖,減少是,它是一個以下階段組成的轉化:
Map: (K k, V v) -> (K' k, V' v1 [, v2,...])
- 即在輸入有一個鍵 - 值對分別類型K和V,的操作,併產生一個密鑰可能不同類型的值的值或鍵列表結果。- 執行分區的混洗階段。
Reduce: (K' k, V' v1 [, v2,...]) -> (K' k, V'' v1 [, v2,...])
- 一種操作,用於輸入值對的鍵值列表,其中「值列表」是由Map
階段生成的與鍵k相對應的所有值的列表,並生成鍵值或鍵值。值列表配對,其中輸出密鑰必須與輸入密鑰具有相同的類型,並且該值爲任意類型。
這樣,您會發現Reduce操作更加靈活和一般。
相關問題
- 1. 此代碼是否刪除重複項?
- 2. 我是否需要刪除此對象?
- 3. 是否需要刪除靜態向量?
- 4. 需要幫助,以正確刪除NHibernate中的重複項
- 5. 複合佈局是否總是需要它自己的類?
- 6. 使用MapReduce刪除重複的記錄
- 7. 是否JAXB總是需要XSD
- 8. 過程是否總是需要終止?
- 9. gzip是否總是需要擴展名?
- 10. 是否總是需要創建Dim表?
- 11. 刪除Python中的重複項Pandas DataFrame不刪除重複項
- 12. 如果我有運算符T *(),是否需要重載刪除?
- 13. 在插入前檢查重複項時是否需要事務?
- 14. 是否需要重置CSS?
- 15. 刪除重複項
- 16. 是否需要從協會的雙方中刪除?
- 17. dbus總是需要總線
- 18. 總是需要清除緩存
- 19. 我是否需要在順序總是塊中的else語句?
- 20. 從BaseSwipeAdapter刪除項目總是刪除最後一項
- 21. 我總是需要在運行之前重建我的項目
- 22. 如果子項目更新,我是否總是需要重建包含子項目dll引用的項目?
- 23. SQL查詢:刪除列中不是主鍵的重複項
- 24. php從數組中刪除重複項和他們的總和
- 25. 需要在foreach中刪除數組中的重複值
- 26. SelectDateWidget總是需要的
- 27. 檢查數組是否有重複的項目,如果它確實比我需要改變原始項目並刪除最後一個重複項目
- 28. 需要問用戶是否要重複使用for循環(Python)
- 29. 當我刪除父項本身時,是否需要刪除DOM元素的所有子項?
- 30. 需要清除C++中的組合框中的重複項
在本書的例子中,爲什麼不發送頁面範圍到一個節點,節點統計該頁面範圍內的所有單詞..沒有比發送單個單詞更有效嗎? – raffian 2012-03-01 17:28:29
這正是發生的情況。但是我們需要整本書中每個單詞的計數,而不是特定的頁面範圍。我會在答案中增加更多細節以使其更清楚。 – 2012-03-01 17:45:14
我還是不明白......我們不計算單個詞的出現,只是總詞。 – raffian 2012-03-03 01:06:16