Python实现mapreduce程序

一:目的

之前面试曾遇到面试官让用python代码实现mapreduce中最简单的demo WordCount,由于之前一直用java来写hadoop程序,突然转到python,是我产生了质疑,python与hadoop应该是不兼容的,即使写出来程序,到时候怎么运行?一头雾水最后导致面试失败。后来通过查阅资料,研究mapreduce的底层实现,发现尽管Hadoop框架是用Java编写的,但是为Hadoop编写的程序不必非要Java写,还可以使用其他语言开发,比如Python或C++(Haoop在0.14.1版本提供C++ API),而mapreduce只是一种思想,跟语言无关。$HADOOP_HOME/src/examples/python/WordCount.py,你就可以明白我的意思了。
现在将会采用python语言实现wordcount并在hadoop上运行实现。

二:Python代码

map实现:

下面Python代码的一个“窍门”是我们将使用Hadoop流API(可以看下相关的维基条目)来帮助我们通过STDIN(标准输入)和STDOUT(标准输出)在Map和Reduce代码间传递数据。我们只是使用Python的sys.stdin读取输入数据和打印输出到sys.stdout。这就是我们需要做的,因为Hadoop流将处理好一切。将下面的代码保存在文件 /home/hduser/mapper.py 中。它将从STDIN读取数据,拆分为单词并输出一组映射单词和它们数量(中间值)的行到STDOUT。尽管这个Map脚本不会计算出单词出现次数的总和(中间值)。相反,它会立即输出( 1)元组的形式——即使某个特定的单词可能会在输入中出现多次。在我们的例子中,我们让后续的Reduce做最终的总和计数。当然,你可以按照你的想法在你自己的脚本中修改这段代码&#x

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值