Python实现MapReduce的WordCount实例

本文通过Python和Hadoop Streaming展示了如何实现MapReduce的WordCount实例,详细介绍了Map和Reduce阶段的Python脚本,以及在Hadoop上运行实例的步骤和可能遇到的问题。
摘要由CSDN通过智能技术生成

1.基本信息

尽管Hadoop的基本框架是用java实现的,但hadoop程序不限于java,可以用python、C++及ruby等等。
Hadoop Streaming提供一个在MapReduce下进行编程的工具包,用户可以基于一些可执行命令、脚本语言或者其他编程语言来创建Map和Reduce任务。
本例中利用Hadoop Streaming + Python 实现统计输入文本的单词的频数。

操作系统:CentOS7.6
Hadoop版本: Hadoop 3.2.0伪分布式环境
Python版本: Python2.7.5


2.实例代码

基于Python的sys模块,实现mapper和reducer之间的数据传输。
我们只需要利用sys.stdin输入数据,sys.stdout输出数据,其他的工作Hadoop streaming会帮助我们完成。

2.1 Map阶段
  • 通过stdin读取文本字符串;
  • 对字符串进行分割等处理;
  • 统计每个单词的频数并输出。

将mapper.py保存到 /usr/local/code 文件夹内,内容如下:

#coding=utf-8
import sys

# stdin标准化输入
for line in sys.stdin:
	# 移除字符串头尾的空格
	line = line.strip()
	# 空格作为分隔符对字符串进行分割
	words = line.split()
	for word in words:
		print "%s\t%s" % (word, 1)

2.2 Reduce阶段
  • 通过stdin读取Map阶段的输出;
  • 利用split等解析Map阶段的输出;
  • 当单词相同时将频数累积。

同样将reducer.py保存到 /usr/local/code 文件夹内,内容如下:

#coding=utf-8

import sys

curr_word = None
curr_count = 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值