1. 用Python编写WordCount程序并提交任务
程序 | WordCount |
输入 | 一个包含大量单词的文本文件 |
输出 | 文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词和频数之间有间隔 |
- 编写map函数,reduce函数
- 将其权限作出相应修改
- 本机上测试运行代码
- 放到HDFS上运行
- 将之前爬取的文本文件上传到hdfs上
- 用Hadoop Streaming命令提交任务
- 查看运行结果
#! /usr/bin/python3
# Map函数
import sys
for line in sys.stdin:
line=line.strip()
words=line.split()
for word in words:
print ('%s\t%s' % (word,1))
#! /usr/bin/python3
# Reduce函数
from operator import itemgetter
import sys
current_word=None
current_count=0
word=None
for line in sys.stdin:
line=line.strip()
word,count=line.split('\t',1)
try:
count=int(count)
except ValueError:
continue
if current_word==word:
current_count+=count
else:
if current_word:
print ('%s\t%s' % (current_word,current_count))
current_count=count
current_word=word
if current_word==word:
print ('%s\t%s' % (current_word,current_count))