MongoDB-MapReduce
MapReduce
대용량 데이터 베이스를 응축하기 위한 데이터 프로세싱 패러다임
Ex) 게시판에서 사용자들이 이용했던 로그를 이용해 누가 활동적인지 파악 가능
Map | Map은 단순한 Key,Value형식으로 선언하며, 이 값들은 emit을 통해 Reduce로 전달 |
Reduce | 데이터를 감소 시키는 역할을 한다. Reduce를 통해 특정 값을 뽑아 낸다. |
Query | Map에 들어갈 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을 남겨주세요.
Leave a comment