在Hadoop中用Python实现MapReduce代码

  • 利用MRjob编写MapReduce代码
    • 1.1.1 安装Mrjob
    • 1.1.2 mrjob实现词频统计
    • 1.1.3 运行mrjob
  • 运行MRJob的几种方式
  • mrjob案例
    • 统计所有单词出现最多的前n个

利用MRjob编写MapReduce代码

1.1.1 安装Mrjob

mrjob简介

  • 一个通过hadoop、emr的mapreduce编程接口(streamming),扩展出来的一个python的编程框架。
  • mrjob程序可以在本地测试运行也可以部署到Hadoop集群上运行

mrjob安装

pip3 install mrjob

1.1.2 mrjob实现词频统计

# word_count.py @midi 2021-01-22from mrjob.job import MRJobclass WordCount(MRJob):
#继承MRjob 重写两个方法mapper和reducer#每一行从line中输入def mapper(self, _, line):for word in line.split():yield word,1# 键相同的会分配到同一个reducerdef reducer(self, word, counts):yield word, sum(counts)if __name__ == '__main__':WordCount.run()

1.1.3 运行mrjob

python3 word_count.py input.txt

运行MRJob的几种方式

1. 默认是 -r inline 方式

python3 word_count.py input.txt > output.txt
python3 word_count.py -r inline input.txt > output.txt

2.本地-r local方式

python3 word_count.py -r local input.txt > output.txt

3. 运行在hadoop集群上

python3 word_count.py -r hadoop hdfs://master/input/ -o hdfs://master/output/

mrjob案例

统计所有单词出现最多的前n个

input.txt

Almost every child will complain about their parents sometimes.
It is natural, because when people stay together for a long time, they will start to have argument.
But ignore about the unhappy time, our parents love us all the time.
No matter what happen to us, they will stand by our sides. We should be grateful to them and try to understand them.
# .py @midi 2021-01-22
from mrjob.job import MRJob, MRStep
import heapqclass TopNWords(MRJob):def mapper(self, _, line):if line.strip() != "":for word in line.strip().split():word = word.strip(',')word = word.strip('.')word = word.strip('?')word = word.strip('!')#剔除每个单词中的标点符号yield word, 1# sum(count) 在元组前面是为了下面heapq的排序def reducer_sum(self, word, counts):yield None, (sum(counts), word)# 利用heapq将数据进行排序,将最大的5个取出def top_n_reducer(self, _, word_cnts):for cnt, word in heapq.nlargest(5, word_cnts):yield word, cnt# 实现steps方法用于指定自定义的mapper和reducer方法def steps(self):# 传入两个step 定义了执行的顺序return [MRStep(mapper=self.mapper,reducer=self.reducer_sum),MRStep(reducer=self.top_n_reducer)]def main():TopNWords.run()if __name__ == '__main__':main()

本地运行

Hadoop上运行

最终结果

tips:
当然 如果不用mrjob这个框架 自己直接写mapper.py和reducer.py也是可以的,下面是集群执行的代码

hadoop jar /home/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.6.jar -file ./mapper.py -mapper ./mapper.py -file ./reducer.py -reducer ./reducer.py -input /user/root/word -output /output/word

在Hadoop中用Python实现MapReduce代码相关推荐

  1. hadoop调用python算法_使用Python实现Hadoop MapReduce程序

    根据上面两篇文章,下面是我在自己的ubuntu上的运行过程.文字基本采用博文使用Python实现Hadoop MapReduce程序,  打字很浪费时间滴. 在这个实例中,我将会向大家介绍如何使用Py ...

  2. hadoop的python框架指南_Python之——用Mrjob框架编写Hadoop MapReduce程序(基于Hadoop 2.5.2)...

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79056120 一.环境准备想了解如何使用原生Python编写MapReduce程序 ...

  3. python部署到hadoop上_python实现mapreduce(2)——在hadoop中执行

    目的:将python实现mapreduce(1)中的python脚本部署到hadoop上,实现mapreduce. 1. 修改脚本执行权限 [tianyc@TeletekHbase ~]$ which ...

  4. Hadoop 中文编码相关问题 -- mapreduce程序处理GBK编码数据并输出GBK编码数据

    2019独角兽企业重金招聘Python工程师标准>>> Hadoop 中文编码相关问题 -- mapreduce程序处理GBK编码数据并输出GBK编码数据 输入是GBK文件, 输出也 ...

  5. Hadoop的Python语言封装

    Hadoop的Python语言封装 Gao Ang 发表于 2010年05月25日 11:38 | Hits: 245 Hadoop使 用Java语言实现,编写具体的应用业务除了借助Hadoop的Ja ...

  6. Hadoop的Python框架指南

    http://www.oschina.net/translate/a-guide-to-python-frameworks-for-hadoop 最近,我加入了Cloudera,在这之前,我在计算生物 ...

  7. python代码块使用缩进表示-python中的代码块使用缩进来表示。

    [填空题]Python 运算符中用来计算整商的是( ). (2.0分) [判断题]python中的多行语句可以使用反斜杠来实现. (2.0分) [填空题]在python中,int表示的数据类型是( ) ...

  8. 10 种机器学习算法的要点(附 Python 和 R 代码)(转载)

    10 种机器学习算法的要点(附 Python 和 R 代码)(转载) from:https://zhuanlan.zhihu.com/p/25273698 前言 谷歌董事长施密特曾说过:虽然谷歌的无人 ...

  9. ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(一)

    ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(一) 目录 概述/Overview 介绍/Introducti ...

最新文章

  1. golang json 获取所有key_Golang —— JSON 大法
  2. 英雄联盟手游火线妹上线了!金克丝也想成为第一AD吗?
  3. Lambda化的一个例子
  4. MySQL8.0.16主从同步
  5. Perl常用语法记录
  6. 社区团购就是好啊,为何网上那多人去喷呢?
  7. Linux系统初学者指南,Linux系统新手入门指南(二)
  8. 181110每日一句
  9. linux中副规则_linux中命名规则_学习笔记
  10. 客户端的云桌面平台配置与开启(附,登录“云电脑”与切换登录账号)
  11. 关于利用DEM生成水系图
  12. Android 获取应用签名
  13. 大数据之flume数据采集
  14. 2022 最新Robots.txt文件教程
  15. 基于MPC的移动机器人轨迹跟踪控制qpOASES例程
  16. python实现杨辉三角思路_Python极简代码实现杨辉三角示例代码
  17. android canvas画渐变背景,View绘制系列(13)-Canvas渐变属性绘制
  18. 网页界面滚动截图(长图)的三种实用方法总结
  19. 树莓派初体验usb摄像头
  20. SpringBoot集成网易企业邮箱,亲测可用

热门文章

  1. Java高质量面试总结
  2. 计算机 自考 选专业
  3. mastercam怎么导入其他软件的文件或者其他格式文件
  4. From Java To Kotlin - Your Cheat Sheet For Java To Kotlin Edit
  5. 【人工智能】智能语音交互技术与应用
  6. 车载E/E架构不断升级,整车架构指引趋势
  7. 计算机组装与维护 案例,计算机组装与维护案例教程
  8. 如何删除或者更新google中收录的网页快照信息
  9. ASP.NET Web Api 教程
  10. 高考志愿填报网站服务器,高考志愿填报系统设计方案.doc