MongoDB-MapReduce

1 minute read

MapReduce

대용량 데이터 베이스를 응축하기 위한 데이터 프로세싱 패러다임
Ex) 게시판에서 사용자들이 이용했던 로그를 이용해 누가 활동적인지 파악 가능

MapMap은 단순한 Key,Value형식으로 선언하며, 이 값들은 emit을 통해 Reduce로 전달
Reduce데이터를 감소 시키는 역할을 한다. Reduce를 통해 특정 값을 뽑아 낸다.
QueryMap에 들어갈 Collection을 필터링 할 때 사용
Out결과를 담을 컬랙션 명


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//MapReduce: 대용량 데이터 베이스를 응축하기 위한 데이터 프로세싱 패러다임
//자료 준비
use mr
db.bank.insert({
    "cust_id" : "A123",
    "amount" : 500,
    "status" : "A"
})
 
db.bank.insert({
    "cust_id" : "A123",
    "amount" : 2500,
    "status" : "A"
})
 
db.bank.insert({
    "cust_id" : "B212",
    "amount" : 200,
    "status" : "A"
})
 
db.bank.insert({
    "cust_id" : "A123",
    "amount" : 300,
    "status" : "D"
})

//자료 확인:
db.bank.find()

//MapReduce
//make map
db.bank.mapReduce(
    //map은 단순한 key value 형식으로 선언하며, 이 값들을 emit을 통해 reduce로 전달한다.
    function() { emit ( this.cust_id, this.amount ) },
    //Reduce은 데이터를 감소 시키는 역활을 한다.
    //Reduce를 통해 특정 값을 뽑아 낸다.
    function( key, values ) { return Array.sum( values ) },
    {
        //query: Map에 들어갈 Collection을 필터링 할때 사용
        query : {status : "A"},
        //결과를 담을 컬랙션 명
        out : "order_totals"
    }
)


결과 - MapReduce 처리 전 Collection


결과 - MapReduce 처리 후 결과



내용 참조: Cocomo Coing 블로그
참조: 원본코드
코드에 문제가 있거나 궁금한 점이 있으면 wjddyd66@naver.com으로 Mail을 남겨주세요.

Categories:

Updated:

Leave a comment