Presentation is loading. Please wait.

Presentation is loading. Please wait.

MapReduce Practice :WordCount

Similar presentations


Presentation on theme: "MapReduce Practice :WordCount"— Presentation transcript:

1 MapReduce Practice :WordCount
박 영 택 컴퓨터학부

2 import module import 사용 방법 sys module import module_name
Python interpreter가 제공하는 변수들과 함수들을 직접 제어할 수 있게 해주는 module stdin, stdout, stderr 등의 attribute 포함

3 sys.stdin sys module의 attribute ‘stdin’
stdin is used for all interactive input 표준 입력(e.g. 키보드, 파일 등)을 관리 아래의 echo.py를 python echo.py 명령을 통해 프로그램 종료 시까지 입력 받은 문자열을 똑같이 출력 import sys   #--- get all lines from stdin --- for line in sys.stdin:     print line echo.py echo.py를 실행한 터미널 화면

4 split() 함수 설명 주어진 기준에 따라 문자열을 나누는 함수 str.split()
괄호 안에 아무런 값도 넣어 주지 않으면 공백(스페이스, 탭, 엔터 등)을 기준으로 문자열을 나눔 괄호 안에 특정한 값이 있을 경우에는 괄호 안의 값을 구분자로 해서 문자열을 나눔 함수를 통해 나눠진 값들은 리스트 형태로 반환 >>> whitespace = “Life is too short” >>> whitespace.split() [‘Life’, ‘is’, ‘too’, ‘short’] # <-- list of string >>> colon = “You:need:Python” >>> colon.split(‘:’) [‘You’, ‘need’, ‘Python’] # <-- list of string

5 strip() 함수 설명 strip() : 문자열 양쪽에 있는 한 칸 이상의 연속된 공백들을 모두 제거
lstrip() : 문자열 중 가장 왼쪽에 있는 한 칸 이상의 연속된 공백들을 모두 제거 rstrip() : 문자열 중 가장 오른쪽에 있는 한 칸 이상의 연속된 공백들을 모두 제거 >>> text1 = “ Hello World! ” >>> text1.strip() ‘Hello World!’ >>> text2 = “ Hello World! ” >>> text2.lstrip() ‘Hello World! ’ >>> text3 = “ Hello World! ” >>> text3.rstrip() ‘ Hello World!’

6 print() 함수설명 입력한 자료형을 출력하는 것
%s = 형식이 지정된 문자열에 삽입 할 문자열 값의 자리 표시 자로 사용됨 %d = 숫자 또는 십진수 값의 자리 표시 자로 사용됨 \t = 키보드의 ‘Tab’키 적용시킨 효과 >>> a = >>> a = “Python” >>> print a >>> print a 실행 결과: 실행 결과: Python >>> name = ‘marcog’ >>> number = 42 >>> print ‘%s\t%d’ % (name, number) 실행 결과 : marcog %s → marcog (문자열) %d → 42 (정수)

7 dictionary 자료형 설명 get(key, default)
Dictionary 는 Key와 Value라는 것을 한 쌍으로 갖는 자료 Dictinoary는 자료형 {} 형태로 선언 Ex) Key가 “이름” 이라면 Value는 “홍길동” get(key, default) key 값이 자료형에 존재하지 않으면 default(=optional) 값 반환 >>> dict = {} >>> dict = {} >>> dict[‘이름’] = ‘홍길동’ >>> dict[‘국어’] = 50 >>> dict >>> dict 실행 결과: {‘이름’: ‘홍길동’} 실행 결과: {‘국어’: 50} >>> dict.get(‘이름’) >>> dict[‘국어’] = dict[‘국어’] + 20 실행 결과: ‘홍길동’ >>> dict >>> dict.get(‘나이’, ‘unknown’) 실행 결과: {‘국어’: 70} 실행 결과: ‘unknown’

8 자료형 변환 type() str() int() 주어진 값의 type(형태)를 반환 주어진 값을 string type으로 변환
주어진 값을 integer type으로 변환 >>> count = ‘123’ >>> type(count) 실행 결과: str >>> count = count + 1 실행 결과: TypeError: must be str, not int 설명 : count의 type이 문자열 이므로, 정수형 1과 연산이 불가능 >>> count = int(count) >>> type(count) 실행 결과: int 설명 : int(count) 형변환 을 하여 str 형태를 int 형으로 변환 >>> count = count + 1 >>> count 실행 결과: 124

9 Mapper Execution Input text I am a boy
You are a girl Input text mapper.py Mapper output I \t 1 am \t 1 a \t 1 boy \t 1 You \t 1 are \t 1 girl \t 1 #!/usr/bin/env python import sys   #--- get all lines from stdin --- for line in sys.stdin:     #--- remove leading and trailing whitespace---     line = line.strip()     #--- split the line into words ---     words = line.split()     #--- output tuples [word, 1] in tab-delimited format---     for word in words:          print '%s\t%s' % (word, "1")

10 Reducer Execution Mapper output #!/usr/bin/env python import sys
I \t 1 am \t 1 a \t 1 boy \t 1 You \t 1 Are \t 1 Girl \t 1 #!/usr/bin/env python import sys   word2count = {}   for line in sys.stdin:     # remove leading and trailing whitespace     line = line.strip()     word, count = line.split(‘\t’)     count = int(count)     word2count[word] = word2count.get(word,0)+count for word in word2count.keys():     print '%s\t%s'% ( word, word2count[word] ) reducer.py { I : 1, am : 1, a : 2, boy : 1, You : 1, are : 1, girl : 1 }

11 Demo : Shakespeare Shakespeare Shakespeare COUNTESS OF
ROUSILLON mother to Bertram. (COUNTESS:) HELENA a gentlewoman protected by the Countess. An old Widow of Florence. (Widow:) DIANA daughter to the Widow. VIOLENTA | | neighbours and friends to the Widow. MARIANA | Shakespeare comedies(1.7mb) glossary(57kb) histories(1.4mb) poems(262kb) tragedies(1.7mb) Around : 5 mb

12 Directory Setting and Code Download
$ cd /home/cloudera $ mkdir mr Download Map-Reduce code Copy code to directory ‘mr’ $ cd /home/cloudera/Downloads $ cp *.py /home/cloudera/mr

13 Execution Command Command Example
$ hadoop jar jarFile_path -mapper mapper_path -reducer reducer_path -file file_path -input input_path -output output_path jar : Runs a jar file -mapper : Mapper executable -reducer : Reducer executable -file : Specify file to be copied to the Map/Reduce cluster -input : Input location for mapper -output : Output location for reducer Example $ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming cdh jar -mapper ~/mr/mapper.py -reducer ~/mr/reducer.py - file ~/mr/mapper.py -file ~/mr/reducer.py -input /user/cloudera/shakespeare/poems -output /user/cloudera/output

14 Result Run Output

15 Result Copy output file to local Output Example


Download ppt "MapReduce Practice :WordCount"

Similar presentations


Ads by Google