[雪峰磁针石博客]大数据Hadoop工具python教程4-mrjob
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
参考资料
- python测试开发项目实战-目录
- python工具书籍下载-持续更新
- python 3.7极速入门教程 - 目录
- 原文地址
- 本文涉及的python测试开发库 谢谢点赞!
- [本文相关海量书籍下载](https://github.com/china-testing/python-api-tesing/blob/master/books.md
单词统计
#!/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选项。
$ python mr_job.py -r hadoop hdfs://input/input.txt $ python mr_job.py -r emr s3://input-bucket/input.txt
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
[雪峰磁针石博客]大数据Hadoop工具python教程9-Luigi工作流
管理Hadoop作业的官方工作流程调度程序是Apache Oozie。与许多其他Hadoop产品一样,Oozie是用Java编写的,是基于服务器的Web应用程序,它运行执行Hadoop MapReduce和Pig的工作流作业。 Oozie工作流是在XML文档中指定的控制依赖性指导非循环图(DAG)中排列的动作集合。虽然Oozie在Hadoop社区中有很多支持,但通过XML属性配置工作流和作业的学习曲线非常陡峭。 Luigi是Spotify创建的Python替代方案,可以构建和配置复杂的批处理作业管道。它处理依赖项解析,工作流管理,可视化等等。它还拥有庞大的社区,并支持许多Hadoop技术。在github上超过1万星。 本章介绍Luigi的安装和工作流程的详细说明。 安装 pip install luigi 工作流 在Luigi中,工作流由一系列操作组成,称为任务。 Luigi任务是非特定的,也就是说,它们可以是任何可以用Python编写的东西。任务的输入和输出数据的位置称为目标(target)。目标通常对应于磁盘上,HDFS上或数据库中的文件位置。除了任务和目标之外,Luigi还利用参...
- 下一篇
[雪峰磁针石博客]大数据Hadoop工具python教程3-MapReduce
MapReduce是一种编程模型,通过将工作分成独立的任务并在一组机器上并行执行任务,可以处理和生成大量数据。 MapReduce编程风格的灵感来自函数式编程结构map和reduce,它们通常用于处理数据列表。在高层MapReduce程序将输入数据元素列表转换为输出数据元素列表两次,一次在映射阶段,一次在还原阶段。 本章首先介绍MapReduce编程模型,并描述数据如何流经模型的不同阶段。然后示例如何使用Python编写MapReduce作业。 数据流 MapReduce框架由三个主要阶段组成:map,shuffle和sort,以及reduce。 map 在映射阶段,mapper函数处理一系列键值对。映射器按顺序处理键值对,产生零个或多个输出键值对。 比如将句子转换为单词。输入是包含句子的字符串,映射器将句子拆分为单词并输出单词。 Shuffle和Sort 映射阶段的中间输出将移动到reducer。将输出从映射器移动到reducer的过程称为洗(shuffling)。 Shuffling由分区函数处理,称为partitioner。partitioner用于控制从映射器到reducer的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块