实验名称
分析和编写wordcount程序
实验目的
1、熟练理解和掌握MapReduce编程模型
2、学会使用map和reduce方法编写wordcount案例,实现需求:对输入文件统计单词频率
实验原理
http://hadoop.apache.org/docs/r1.0.4/cn/streaming.html
实验环境
Ubuntu 16.04
Hadoop 2.7.3
Python 3.6
python代码编写
1、创建map.py文件(作业要求:添加去除标点符号的处理;把大写字母都转成小写)
import sys
for line in sys.stdin:
ss = line.strip().split(' ')
for word in ss:
print('\t'.join([word.strip(),'1']))
2、创建reduce.py文件
import sys
cur_word = None
sum = 0
for line in sys.stdin:
word,cnt = line.strip().split('\t')
if cur_word == None:
cur_word = word
if cur_word != word:
print('\t'.join([cur_word,str(sum)]))
cur_word = word
sum = 0
sum += int(cnt)
print('\t'.join([cur_word,str(sum)]))
四、本地管道测试
cat data.txt | python map.py | sort -k 1 | python reduce.py