본문 바로가기
Web & Mobile/Python

Lecture 94 - Python(11) WordCount Method

by Bennyziio 2019. 8. 14.
반응형

hadoop에서 Python 사용하기

Project Assignment WordCounting in Python and Hadoop

1. python - 구글링 
    사이트 -> 워드카운트하는 프로그램 짜기 
    - 워드문서 
    - 소스 

2. hadoop - standalone
    사이트 -> 워드카운트 
    - 워드문서 

-> 스크린샷

1. Python Word Count

'''
Created on 2018. 10. 5.

@author: kitcoop
'''
import re

with open('C:/Python/eclipse-workspace/AssignmentEx01/4300-0.txt', 'r', encoding='utf-8-sig') as file:
	data = file.read()
	# 정규식 사용 해당 문자를 공백화 하기
	# re.sub(pattern, repl, string) - string에서 pattern과 매치하는 텍스트를 repl로 치환한다.
	words = re.sub(r'[-—,.?!:]', '', data)
# 대문자를 소문자화
words = words.lower()

# print(words)
word_list = words.split()
# print(word_list)

# 딕셔너리 초기화 
d={}

for word in word_list:
	if word not in d:
		d[word] = 0
	d[word] += 1

# key와 value 위치 바꿈 - tuple화
word_freq = []
for key, value in d.items():
	word_freq.append((value, key))
# count된 word 빈도수 높은순으로 정렬
word_freq.sort(reverse=True)

print(word_freq)

# 4300-1이란 text 문서로 출력
with open('C:/Python/eclipse-workspace/AssignmentEx01/4300-1.txt', 'w', encoding='utf-8-sig') as file2:
	# 리스트를 String으로 변환
	str1 = ',\n'.join(map(str, word_freq))
	data2 = file2.write(str1)
	print('성공')

file.close()
file2.close()

정규식 사용 참고

위와 같이 4300-1에 높은 빈도수대로 정렬된 결과를 볼 수 있다.

하둡에서 파이썬 실행해서 해보기

2. Hadoop Word Count

[hadoop@localhost hadoop-3.1.1]$ mkdir input
[hadoop@localhost hadoop-3.1.1]$ cp 4300-0.txt input/
[hadoop@localhost hadoop-3.1.1]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar wordcount input/* output
[hadoop@localhost hadoop-3.1.1]$ cat output/*

여기까지가 local에서 wordcount 하는법

Yarn 서버에서 wordcount 해보자

반응형

댓글