用python实现mapreduce

map

[[email protected] hadoop]# cat mapper.py

#!/usr/bin/env python

import sys

for line in sys.stdin:

line =line.strip()

words =line.split()

for word in words:

print ‘%s\t%s‘ % (word,1)

[[email protected] hadoop]#

reduce

[[email protected] hadoop]# vim reducer.py

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)

时间: 2024-10-28 21:30:59

用python实现mapreduce的相关文章

用python写MapReduce函数

尽管Hadoop框架是用java写的,但是Hadoop程序不限于java,可以用python.C++.ruby等.本例子中直接用python写一个MapReduce实例,而不是用Jython把python代码转化成jar文件. 例子的目的是统计输入文件的单词的词频. 输入:文本文件 输出:文本(每行包括单词和单词的词频,两者之间用'\t'隔开) 1. Python MapReduce 代码 使用python写MapReduce的"诀窍"是利用Hadoop流的API,通过STDIN(标准

【转】用python写MapReduce函数——以WordCount为例

本例中直接用python写一个MapReduce实例:统计输入文件的单词的词频 使用python写MapReduce的“诀窍”是利用Hadoop流的API,通过STDIN(标准输入).STDOUT(标准输出)在Map函数和Reduce函数之间传递数据. 我们唯一需要做的是利用Python的sys.stdin读取输入数据,并把我们的输出传送给sys.stdout.Hadoop流将会帮助我们处理别的任何事情. 1.map函数(mapper.py) #!/usr/bin/env python impo

Python开发MapReduce系列(一)WordCount Demo

原创,转发请注明出处. MapReduce是hadoop这只大象的核心,Hadoop 中,数据处理核心就是 MapReduce 程序设计模型.一个Map/Reduce 作业(job) 通常会把输入的数据集切分为若干独立的数据块,由 map任务(task)以完全并行的方式处理它们.框架会对map的输出先进行排序, 然后把结果输入给reduce任务.通常作业的输入和输出都会被存储在文件系统中.因此,我们的编程中心主要是 mapper阶段和reducer阶段. 下面来从零开发一个MapReduce程序

Python开发MapReduce系列(二)Python实现MapReduce分桶

版权声明:本文为博主原创文章,未经博主允许不得转载 首先,先引出两点来展开下面的话题. (1)map阶段的排序是在hash之后,写入磁盘之前进行.排序的两个关键字是partition(分区编号)和key. (2)map结束后,并不是马上写到磁盘的,而是有个环形缓冲区,数据写到缓冲区中,默认溢出率是80%(这个值可以通过属性设置 io.sort.mb),每达到溢出条件就溢出生成一个小文件,直到全部数据写完,最后把所有的小文件合并成一个大文件,并写到磁盘中.这样做的目的是减少磁盘寻道时间,让每个ma

python执行mapreduce

执行mapreduce有两种方式,一种是原生Java写的mr,一种是直接使用Streaming方式,这种方式是在Java上面做了一个封装,可以通过其它语言调用Java原生的mr接口. 优点 可以使用自己喜欢的语言来编写MapReduce程序(换句话说,不必写Java XD) 不需要像写Java的MR程序那样import一大堆库,在代码里做一大堆配置,很多东西都抽象到了stdio上,代码量显著减少 因为没有库的依赖,调试方便,并且可以脱离Hadoop先在本地用管道模拟调试 缺点 只能通过命令行参数

Python 的mapreduce 单词统计(转载)

#!/usr/bin/env python import random # 'abc..z' alphaStr = "".join(map(chr, range(97,123))) fp = open("word.txt", "w") maxIter = 100000 for i in range(maxIter): word = "" len =random.randint(1,5) for j in range(len):

python mongodb MapReduce

# -*- coding: utf-8 -*-import osimport csvimport pymongofrom pymongo import MongoClientfrom bson.code import Codefrom pymongo import MongoClient #建立连接client = MongoClient('10.20.4.79', 27017)#client = MongoClient('10.20.66.106', 27017)db_name = 'ta'

使用Python实现Hadoop MapReduce程序

转自:使用Python实现Hadoop MapReduce程序 英文原文:Writing an Hadoop MapReduce Program in Python 根据上面两篇文章,下面是我在自己的ubuntu上的运行过程.文字基本采用博文使用Python实现Hadoop MapReduce程序,  打字很浪费时间滴. 在这个实例中,我将会向大家介绍如何使用Python 为 Hadoop编写一个简单的MapReduce程序. 尽管Hadoop 框架是使用Java编写的但是我们仍然需要使用像C+

用Map-Reduce的思维处理数据

在很多人的眼里,Map-Reduce等于Hadoop,没有Hadoop谈Map-Reduce犹如自上谈兵,实则不然,Map-Reduce是一种计算模型,只是非常适合在并行的环境下运行,Hadoop是Map-Reduce的一种实现,没有Hadoop照样可以跑Map-Reduce程序.python就内置有map()和reduce方法(虽然与hadoop的map-reduce有区别). 这篇文章主要介绍如何用python在linux的管道进行map-reduce编程,本文写的所有map-reduce程