Data Engineering/Hadoop

[Hadoop] Python으로 MapReduce 구현하기

snoony 2024. 3. 7. 15:43

mapper.py

import sys
for line in sys.stdin:
    words = line.strip().split()
    for word in words:
        print(f"{word}\t{1}")

mapper.py 리눅스 서버로 옮기기

[root@localhost hadoop-3.3.6]# chmod +x mapper.py
[root@localhost hadoop-3.3.6]# echo "hello world python and hadoop"| ~/hadoop-3.3.6/mapper.py

mapreduce.py

#!/usr/bin/env python

from operator import itemgetter # 다양한 방법으로 딕셔너리를 정렬
import sys
# 필요한 변수 초기화
result = {}
for line in sys.stdin:
	word,count = line.strip().split('\t',1)
	if word not in result:
		result[word] = 1 # 최초 생성
	else:
		result[word] += 1 # 키가 있으므로 증가
for key,value in result.items():
	print(f"{key} : {value}")

실행 권한 설정

[root@localhost hadoop-3.3.6]# chmod +x mapreduce.py

실행 결과

[root@localhost hadoop-3.3.6]# echo "hello world python and hadoop hello"| ./mapper.py | sort -k1,1 | ./mapreduce.py