MapReduce Practice :WordCount

Slides:



Advertisements
Similar presentations
Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Advertisements

제철고 프로그래밍언어 2015 가을학기 강의 #2 Python 변수, 입출력, 배열 박성우 POSTECH 컴퓨터공학과 2015 년 9 월 30 일.
Python Ch.06 RaspberryPi Sejin Oh. Raspberry Pi Python  IDLE(Integrated Development Environment)  라즈베리 파이 배포본들은 일반적으로 파이썬과 파이썬 3 의 IDLE 파 이썬 개발 도구를.
Python RaspberryPi Sejin Oh. Raspberry Pi Python  파이썬이란 무엇인가 ?  파이썬이란 1990 년 암스테르담의 귀도 반 로섬에 의해 만들어진 인 터프리터 언어이다.  파이썬은 사람이 생각하는 방식을 그대로 표현할 수 있도록.
변수와 조건문 빛나리 36 호 박승운. 파이썬 쉽게 사용하기 Python IDLE 사용 FILE - New File 로 파일 만들기 Run – Run Module 로 실행하기.
Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
IPython Notebook + Spark + TensorFlow on Windows
기초C언어 제1주 실습 강의 소개, C언어 개요, Cygwin/Eclipse 사용 컴퓨터시뮬레이션학과 2016년 봄학기
HDFS Tutorial.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
Distributed Computing (Apache Hadoop & Hive Review)
MySQL 및 Workbench 설치 데이터 베이스.
Lesson 3. 입출력과 제어문.
3. printf()와 데이터 형식.
Lesson 5. 레퍼런스 데이터형.
Lesson 6. 형변환.
제 3장. C보다 나은 C++ II.
Introduction to Big Data, Summer, 2013
Internet Protocol and Programming
Heesang kim PL/SQL 3 Heesang kim.
Perl File Handling FileHandle : Name for I/O connection
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Javascript Basic Sample Programs
하둡 기반 빅데이터 처리 방법.
발로 하는 파이썬 세미나 안녕하세요. 저는 발로 하는 파이썬 세미나를 발표할….
6장. printf와 scanf 함수에 대한 고찰
Tail-recursive Function, High-order Function
PySpark Review 박영택.
공학컴퓨터프로그래밍 Python 염익준 교수.
C#.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
Linux/UNIX Programming
Gachon CS50 Python Basics I Basic Operators 가천대학교 | 산업경영공학과 최성철 교수.
이름 : 황 상 두 전화번호 : 이메일 : PinTool 이름 : 황 상 두 전화번호 : 이메일 :
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
IPython Notebook + Spark + TensorFlow on MacOS
DataScience Lab. 박사과정 김희찬 (목)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
연산자 (Operator).
Internet Protocol and Programming
프로그래밍 원리 Chapter 05 자바스크립트 기초 신한대학교 IT융합공학부 박 호 균.
에어 조건문.
인터넷응용프로그래밍 JavaScript(Intro).
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Internet Protocol and Programming
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
Hello, Python! #3 <부제: 코딩은 혼자하는 것이다>
Linux/UNIX Programming
2nd day Indexing and Slicing
에어 PHP 입문.
Internet Protocol and Programming
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
-자료형과 연산- IS lab. 김건영 Python -자료형과 연산- IS lab. 김건영
Tensorboard in Windows
Internet Protocol and Programming
함수, 모듈.
Internet Protocol and Programming
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
Spring, 2019 School of CSE Pusan National University
C.
Spring, 2019 School of CSE Pusan National University
6 객체.
Python 기본.
Presentation transcript:

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

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

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를 실행한 터미널 화면

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

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!’

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

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’

자료형 변환 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

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")

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 }

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

Directory Setting and Code Download $ cd /home/cloudera $ mkdir mr Download Map-Reduce code https://docs.google.com/uc?&id=1vY2TP0iCm6vSS1wevuIuDrzqT1tsYI-C https://docs.google.com/uc?&id=1oMw4AF78s_FOZOetPZQVjpF8QfYjyyzS Copy code to directory ‘mr’ $ cd /home/cloudera/Downloads $ cp *.py /home/cloudera/mr

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-2.6.0-cdh5.13.0.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

Result Run Output

Result Copy output file to local Output Example