본문으로 바로가기

Uber demo 프로그램

 

1. 기능

이 프로그램은 지역과 날짜별로 운행한 vehicle의 개수와 서비스횟수를 받아서

그것을 지역과 요일별로 묶어서 vehicle과 서비스횟수의 합을 구하는 기능을 한다.

 

2. uber.dat ( input 데이터 )

다음은 hdfs 의 input 폴더 안에 들어갈 텍스트 데이터이고, 한줄씩 Map의 input으로 전달된다.

Base number,Date,Active vehicles,Trip

 

Base number (지역번호)

Date (날짜)

Active vehicles (운행한 자동차의 갯수)

trips (서비스 횟수)

 

위와 같은 형식으로 작성되어 있다.

예를들어,

B02512,1/1/2018,190,1132 이면

-> Base number : B02512 , Date : 1/1/2018 , Active vehicles : 190, Trips : 1132 이다.

 

B02765,1/1/2015,225,1765
B02764,1/1/2015,3427,29421
B02682,1/1/2015,945,7679
B02617,1/1/2015,1228,9537
B02598,1/1/2015,870,6903
B02598,1/2/2015,785,4768
B02617,1/2/2015,1137,7065
B02512,1/2/2015,175,875
B02682,1/2/2015,890,5506
B02765,1/2/2015,196,1001
B02764,1/2/2015,3147,19974
B02765,1/3/2015,201,1526

...

 

3. output.dat ( output 데이터 )

hdfs 의 uberoutput 폴더 하위에 생성될 출력파일이다.

지역번호,요일 서비스횟수,운행한 자동차의 갯수

 

B02512,MON 1922,122
B02512,TUE 2200,451
...

 

4. Map

Base number,Date,Active vehicles,Trip

1) input 텍스트를 Tokenizer로 자른다.

2) Date(날짜) 의 요일을 구한다.

3) Base number(지역번호) 와 요일을 string으로 묶어서 key로 지정한다. (Base number + "," + "요일")

3) Active vehicles와 Trip을 string으로 묶어서 value로 지정한다. (Trip + "," + "Active vehicles")

 

 

5. shuffle (Hadoop engine 에서 자동으로 수행 - 직접 작성하지 않음)

(key, value) -> (장르, 1,1,1,1,1)

위와 같이 장르를 key값으로 하고 같은 장르를 가진 value 들을 모두 1로 한 entity 가 생성되고

이 entitiy들이 Reduce의 input으로 전달된다.

 

 

6. Reduce

Reduce 의 input 으로 들어온 key (장르) 는 그대로 output의 key로 설정하고

value인 1을 모두 더해서 그 합을 output의 value로 설정하여 write한다.

 

 

7. 소스코드

 

반응형