ABAP——程式碼更改器
阿新 • • 發佈:2021-11-10
MongoDB MapReduce
MapReduce 簡介
MongoDB 中的 MapReduce 可以用來實現更復雜的聚合命令,使用 MapReduce 主要實現兩個函式:map 函式和reduce函式
- map 函式(分組):用來生成鍵值對序列,map 函式的結果作為 reduce 函式的引數
- reduce 函式(聚合):將 map 函式的結果再做進一步的統計
MapReduce 原理
Map-Reduce 是一種計算模型,簡單的說就是將大批量的集合文件進行分組(Map),然後再將分組後的 key-value 鍵值對結果進行統計得到最終結果(Reduce)。MongoDB 提供的 Map-Reduce 非常靈活,對於大規模分散式資料分析也相當實用。
MapReduce 基本語法
db.collection.mapReduce(
function() {emit(key,value);}, # map 函式
function(key,values) {return reduceFunction}, # reduce 函式
# 可選操作
{
out: collection,
query: document,
sort: document,
limit: number
}
)
使用 MapReduce 要實現兩個函式 Map 函式和 Reduce 函式,Map 函式呼叫 emit(key, value), 遍歷 collection 中所有的記錄, 將 key 與 value 傳遞給 Reduce 函式進行處理。
Map 函式必須呼叫 emit(key, value) 返回鍵值對。
引數說明:
- map :對映函式 (生成鍵值對序列,作為 reduce 函式引數)。
- reduce 統計函式,reduce函式的任務就是將key-values變成key-value,也就是把values陣列變成一個單一的值value。。
- out 統計結果存放集合 (不指定則使用臨時集合,在客戶端斷開後自動刪除)。
- query 一個篩選條件,只有滿足條件的文件才會呼叫map函式。(query。limit,sort可以隨意組合)
- sort 和limit結合的sort排序引數(也是在發往map函式前給文件排序),可以優化分組機制
- limit 發往map函式的文件數量的上限(要是沒有limit,單獨使用sort的用處不大)