2017-10-13 29 views
0

以前我問過將CouchDB的reduce函數傳遞給一個鍵列表的用例是什麼;答案(https://stackoverflow.com/a/46713674/3114742)提到了兩個潛在的使用情況:是否所有MapReduce實現都將鍵參數輸入到reduce函數中?

  1. 從設計的角度來看,你可能希望通過一個地圖功能
  2. 您可以根據按鍵輸入來計算的東西(比如如何發射鍵工作通常會出現一個特定的鍵)

是否所有的MapReduce實現都將一個鍵數組作爲reduce函數的輸入? CouchDB專門跟蹤產生密鑰的原始文檔。即輸入到CouchDB的降低功能:

function(keys, values, rereduce) {...} 

的按鍵精氨酸看起來像這樣:[[key1,id1], [key2,id2], [key3,id3]]

即使Couch記錄作爲Map函數結果發出密鑰的實體,即使在reduce函數中也是如此。其他MapReduce實現是否跟蹤這些信息?或者這是特定於CouchDB的...

回答

0

並非所有的mapreduce實現都具有與在couchdb中相同的結構。 例如在mongodb mapreduce中,與沙發db不同,只有一個鍵和值列表。所以,map函數發出的所有鍵都被分組並作爲一個鍵和值列表傳遞以減少函數。

實施例:

emit(1,10) 
emit(1,20) 

將被分組以

reduce(1,[10,20]) 
相關問題