开发者社区> python人工智能命理> 正文

[雪峰磁针石博客]大数据Hadoop工具python教程4-mrjob

简介: mrjob是由Yelp创建的Python MapReduce库,它封装了Hadoop流,允许MapReduce应用程序以更加Pythonic的方式编写。 mrjob用纯Python编写多步MapReduce作业。
+关注继续查看

mrjob是由Yelp创建的Python MapReduce库,它封装了Hadoop流,允许MapReduce应用程序以更加Pythonic的方式编写。 mrjob用纯Python编写多步MapReduce作业。使用mrjob编写的MapReduce作业可以在本地测试,在Hadoop集群上运行,或使用Amazon Elastic MapReduce(EMR)在云中运行。

使用mrjob编写MapReduce应用程序有许多好处:

  • mrjob目前是非常活跃的框架,每周都有多次提交。
  • mrjob拥有丰富的文档。
  • 可以在不安装Hadoop的情况下执行和测试mrjob应用程序,在部署到Hadoop集群之前就可开发和测试。
  • mrjob允许MapReduce应用程序在单个类中编写,而不是为mapper和reducer编写单独的程序。

虽然mrjob是很好的解决方案,但它确实有它的缺点。 mrjob是简化的,因此它不会提供与其他API提供的Hadoop相同级别的访问权限。 mrjob不使用typedbytes,因此其他库可能更快。

安装

$ pip install mrjob

参考资料

 单词统计

#!/usr/bin/env python
# 项目实战讨论QQ群630011153 144081101
# https://github.com/china-testing/python-api-tesing
from mrjob.job import MRJob

class MRWordCount(MRJob):

   def mapper(self, _, line):
      for word in line.split():
         yield(word, 1)

   def reducer(self, word, counts):
      yield(word, sum(counts))

if __name__ == '__main__':
   MRWordCount.run()

执行结果

$  python word_count.py /home/hduser_/input2.txt 
No configs found; falling back on auto-configuration
No configs specified for inline runner
Running step 1 of 1...
Creating temp directory /tmp/word_count.hduser_.20190122.035729.128110
job output is in /tmp/word_count.hduser_.20190122.035729.128110/output
Streaming final output from /tmp/word_count.hduser_.20190122.035729.128110/output...
"nimble"    1
"be"    2
"quick"    1
"jack"    2
Removing temp directory /tmp/word_count.hduser_.20190122.035729.128110...

比较重要的方法有:mapper()、combiner()和reducer()。

多个输入文件:

$ python mr_job.py input1.txt input2.txt input3.txt

默认情况下,mrjob在本地运行,允许在提交到Hadoop集群之前开发和调试代码。
要更改作业的运行方式,请指定-r/--runner选项。

图片.png

$ python mr_job.py -r hadoop hdfs://input/input.txt
$ python mr_job.py -r emr s3://input-bucket/input.txt

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
大神手把手教你:(Python)序列数据的One Hot编码
不懂One Hot编码?让大神手把手教你(文中代码可以直接运行),用小例子清晰明了的带你进入One hot 编码!
4962 0
Python入门教程:Day01-初识Python
Python简介 Python的历史 1989年圣诞节:Guido von Rossum开始写Python语言的编译器。1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面又出现了Java和C#实现的版本Jython和IronPython,以及PyPy、Brython、Pyston等其他实现),可以调用C语言的库函数。
2704 0
Python系列直播——深入Python与日志服务,玩转大规模数据分析处理实战
Python系列直播——深入Python与日志服务,玩转大规模数据分析处理实战
4936 0
Python爬虫入门教程 31-100 36氪(36kr)数据抓取 scrapy
1. 36氪(36kr)数据----写在前面 今天抓取一个新闻媒体,36kr的文章内容,也是为后面的数据分析做相应的准备的,预计在12月底,爬虫大概写到50篇案例的时刻,将会迎来一个新的内容,系统的数据分析博文,记得关注哦~ 36kr 让一部分人先看到未来,而你今天要做的事情确实要抓取它的过去。
9433 0
Python爬虫入门教程 15-100 石家庄政民互动数据爬取
1. 石家庄政民互动数据爬取-写在前面 今天,咱抓取一个网站,这个网站呢,涉及的内容就是 网友留言和回复,特别简单,但是网站是gov的。网址为http://www.sjz.gov.cn/col/1490066682000/index.html 首先声明,为了学习,绝无恶意抓取信息,不管你信不信,数据我没有长期存储,预计存储到重装操作系统就删除。
2147 0
C++、Python、数据结构与算法、计算机基础、数据库教程汇总!
C++、Python、数据结构与算法、计算机基础、数据库教程汇总!
58 0
A Byte of Python(简明Python教程) for Python 3.0 下载
A Byte of Python v1.92 (for Python 3.0) 官方下载地址,当前(20120730)  最新版本 1.92 基于Python3的 下载: http://files.swaroopch.com/python/byte_of_python_v192.pdf在线阅读:http://www.cnblogs.com/txw1958/archive/2012/12/10/A_Byte_of_Python3.html 简明Python3教程《A Byte of Python3》是一本关于用Python3语言编程的书。
2129 0
全网最全python教程,从零到精通(学python有它就够必收藏)
全网最全python教程,从零到精通(学python有它就够必收藏)
117 0
Python大数据:jieba分词,词频统计
实验目的 学习如何读取一个文件 学习如何使用DataFrame 学习jieba中文分词组件及停用词处理原理 了解Jupyter Notebook 概念 中文分词 在自然语言处理过程中,为了能更好地处理句子,往往需要把句子拆开分成一个一个的词语,这样能更好的分析句子的特性,这个过程叫就叫做分词。
7212 0
+关注
python人工智能命理
提供书籍寻找服务,十元一本起,不成功不收费。 曾任职于腾讯、华为等公司,独立带队完成大型项目的全系统测试,担任过技术总监、测试经理以及测试专家职位。现任某主流公司自动化测试架构师。
170
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载